Aller au contenu

Docker : les images

Une image est un modèle en lecture seule à partir duquel les conteneurs sont créés. Les exemples utilisent des noms génériques (monapp).

Fenêtre de terminal
docker images # images locales (équivaut à docker image ls)
docker images --filter dangling=true # images sans tag (« dangling »)
docker search nginx # recherche sur Docker Hub
docker inspect nginx:alpine # détail d'une image (JSON)
docker history nginx:alpine # couches de l'image
Fenêtre de terminal
docker pull nginx:alpine # télécharge une image
docker pull ubuntu:24.04 # version précise
docker pull registre.example.com/monapp:1.0 # depuis un autre registre

Sans tag, Docker utilise latest. Pour des déploiements reproductibles, indiquer un tag de version précis.

À partir d’un Dockerfile placé à la racine du projet :

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Fenêtre de terminal
docker build -t monapp:1.0 . # construit depuis le dossier courant
docker build -f Dockerfile.prod -t monapp:prod . # autre fichier
docker build --no-cache -t monapp:1.0 . # sans utiliser le cache
docker build --build-arg VERSION=1.2 -t monapp:1.2 . # argument de construction
docker buildx build --platform linux/amd64,linux/arm64 -t registre.example.com/monapp:1.0 --push . # multi-architecture

Un fichier .dockerignore exclut des fichiers du contexte de construction (node_modules, .git, .env), ce qui accélère le build et évite d’embarquer des secrets.

Fenêtre de terminal
docker tag monapp:1.0 registre.example.com/monapp:1.0 # ajoute un nom
docker login registre.example.com
docker push registre.example.com/monapp:1.0

Convention : registre/dépôt:tag (registre.example.com/monapp:1.0).

Utile pour transférer une image sans registre :

Fenêtre de terminal
docker save -o monapp.tar monapp:1.0 # exporte une image en archive
docker load -i monapp.tar # importe l'archive
Commande Rôle
docker rmi monapp:1.0 Supprime une image (échoue si un conteneur l’utilise)
docker image prune Supprime les images « dangling »
docker image prune -a Supprime toutes les images non utilisées par un conteneur
docker builder prune Vide le cache de construction