Virtualisation / Fiche

Les commandes Docker essentielles

Le vocabulaire (image, conteneur, volume, réseau, registre) et les commandes Docker du quotidien, classées par usage : lancer et gérer des conteneurs, lire les journaux, entrer dans un conteneur, gérer images, volumes et réseaux, nettoyer, sauvegarder un volume et construire une première image.

Virtualisation Fiche Débutant Publié le 20 octobre 2026 15 min de lecture
Porte-conteneurs chargé de conteneurs colorés dans un port
Photo : Daniel Miksha sur Unsplash

Avant de commencer

En clair

Une image, c'est un modèle figé, comme un plat surgelé : tout est déjà préparé à l'intérieur. Un conteneur, c'est ce plat une fois réchauffé et servi : une instance qui tourne, qu'on peut arrêter, relancer ou jeter, et dont on peut servir autant d'exemplaires qu'on veut à partir du même modèle. Les volumes sont les boîtes de conservation à part : ce qu'on y range survit quand on jette le conteneur. Retenez ce dernier point : tout ce qui est écrit dans un conteneur sans volume disparaît avec lui.

Dans les exemples, sudo est omis : il est nécessaire si votre compte n'appartient pas au groupe docker (voir installer Docker).

1. Le vocabulaire

Terme Définition
Image Modèle en lecture seule : système minimal, application, dépendances. Exemple : nginx:stable-alpine
Conteneur Une instance en cours d'exécution (ou arrêtée) d'une image
Tag La version d'une image, après les deux-points : debian:13, postgres:17. Sans tag, Docker prend latest
Registre Le serveur qui stocke les images : Docker Hub (par défaut), GitHub (ghcr.io), Quay, ou un registre privé
Volume Espace de stockage géré par Docker, qui survit à la suppression du conteneur
Montage de dossier (bind mount) Un dossier de l'hôte monté dans le conteneur
Réseau Réseau virtuel qui relie les conteneurs entre eux
Dockerfile Le fichier « recette » qui sert à construire une image

2. Lancer un conteneur : docker run

docker run -d --name web \
  --restart unless-stopped \
  -p 127.0.0.1:8080:80 \
  -v web-data:/usr/share/nginx/html \
  nginx:stable-alpine
Option Rôle
-d En arrière-plan (detached) ; sans elle, le conteneur occupe le terminal
--name web Donne un nom ; sinon Docker en invente un
--restart unless-stopped Redémarre le conteneur après un plantage ou un redémarrage du serveur
-p 127.0.0.1:8080:80 Publie le port 80 du conteneur sur le port 8080 de l'hôte, ici uniquement en local
-v web-data:/usr/share/nginx/html Monte le volume web-data dans le conteneur
-e CLE=valeur Définit une variable d'environnement (configuration de l'application)
--rm Supprime le conteneur dès qu'il s'arrête (tests, commandes ponctuelles)
-it Mode interactif avec un terminal (pour un shell)

-p 8080:80 publie sur toutes les interfaces

Sans adresse devant, le port est ouvert sur toutes les interfaces du serveur, en contournant ufw. Précisez 127.0.0.1: (accès local, derrière un reverse proxy) ou l'adresse du réseau local. Voir installer Docker, partie pare-feu.

Les politiques de redémarrage

Politique Comportement
no (par défaut) Jamais de redémarrage automatique
on-failure Seulement si le conteneur s'arrête en erreur
always Toujours, même après un arrêt manuel, dès que le service Docker redémarre
unless-stopped Toujours, sauf si vous l'avez arrêté vous-même : le choix le plus courant

Tester une image sans rien laisser derrière

docker run --rm -it debian:13 bash

Vous obtenez un shell dans une Debian 13 toute neuve ; en tapant exit, le conteneur est supprimé.

3. Gérer les conteneurs

Commande Effet
docker ps Conteneurs en cours d'exécution
docker ps -a Tous les conteneurs, y compris arrêtés
docker stop web Arrête proprement (signal d'arrêt, puis arrêt forcé après 10 secondes)
docker start web Redémarre un conteneur arrêté
docker restart web Arrête puis redémarre
docker rm web Supprime un conteneur arrêté (-f pour le forcer s'il tourne)
docker rename web site Renomme
docker update --restart unless-stopped web Change la politique de redémarrage d'un conteneur existant
docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                    NAMES
3f2a9c1e7b44   nginx:stable-alpine   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   127.0.0.1:8080->80/tcp   web

4. Observer et dépanner

Commande Effet
docker logs web Journaux du conteneur
docker logs -f --tail 50 web Les 50 dernières lignes, puis la suite en direct (Ctrl+C pour quitter)
docker logs --since 1h web Les journaux de la dernière heure
docker exec -it web sh Ouvre un shell dans le conteneur en cours (bash si l'image le contient)
docker exec web cat /etc/nginx/nginx.conf Lance une seule commande dans le conteneur
docker inspect web Toute la configuration en JSON : adresses IP, montages, variables
docker stats Consommation processeur, mémoire, réseau et disque, en direct
docker top web Processus qui tournent dans le conteneur
docker cp web:/etc/nginx/nginx.conf ./ Copie un fichier du conteneur vers l'hôte (ou l'inverse)
docker port web Ports publiés

Extraire une information précise d'inspect :

docker inspect -f '{{.State.Status}} {{.RestartCount}}' web
running 0

Un RestartCount qui augmente signale un conteneur qui plante en boucle : regardez docker logs.

5. Les images

Commande Effet
docker pull nginx:stable-alpine Télécharge une image
docker images Images présentes sur la machine
docker rmi nginx:stable-alpine Supprime une image (si aucun conteneur ne l'utilise)
docker image prune Supprime les images « orphelines » (sans tag)
docker image prune -a Supprime toutes les images non utilisées par un conteneur
docker image history nginx:stable-alpine Couches qui composent l'image

Choisir ses images

Préférez les images officielles (badge Docker Official Image sur Docker Hub) ou celles publiées par l'éditeur du logiciel. Fixez la version (postgres:17 plutôt que postgres:latest) pour éviter qu'une mise à jour majeure arrive sans prévenir. Pour vérifier les vulnérabilités connues d'une image, l'outil libre Trivy s'utilise en une commande : trivy image nginx:stable-alpine.

6. Les volumes et les montages

Volume nommé Montage de dossier (bind mount)
Syntaxe -v web-data:/chemin -v /srv/web:/chemin (chemin absolu)
Emplacement Géré par Docker (/var/lib/docker/volumes/) Un dossier de votre choix sur l'hôte
Usage idéal Bases de données, données d'application Fichiers de configuration, contenus à éditer depuis l'hôte
Droits Gérés par Docker Attention aux propriétaires et permissions des fichiers
Commande Effet
docker volume ls Liste les volumes
docker volume inspect web-data Détails, dont l'emplacement sur le disque
docker volume create web-data Crée un volume
docker volume rm web-data Supprime un volume (et ses données)
docker volume prune Supprime les volumes anonymes non utilisés (-a : aussi les volumes nommés non utilisés)

Ajouter :ro rend le montage en lecture seule dans le conteneur, ce qui est recommandé pour la configuration : -v /srv/web/nginx.conf:/etc/nginx/nginx.conf:ro.

Sauvegarder et restaurer un volume

Sauvegarde du volume web-data dans une archive du dossier courant :

docker run --rm -v web-data:/data:ro -v "$PWD":/sauvegarde \
  debian:13 tar czf /sauvegarde/web-data.tar.gz -C /data .

Restauration dans un volume (vide ou nouveau) :

docker run --rm -v web-data:/data -v "$PWD":/sauvegarde \
  debian:13 tar xzf /sauvegarde/web-data.tar.gz -C /data

Pour une base de données, arrêtez le conteneur avant, ou utilisez l'outil de sauvegarde de la base (pg_dump, mysqldump) : copier les fichiers d'une base en cours d'écriture donne une sauvegarde incohérente.

7. Les réseaux

Commande Effet
docker network ls Liste les réseaux
docker network create mon-reseau Crée un réseau
docker run --network mon-reseau … Lance un conteneur dans ce réseau
docker network connect mon-reseau web Ajoute un conteneur existant à un réseau
docker network inspect mon-reseau Conteneurs connectés et adresses

Dans un réseau créé par vous (ou par Compose), les conteneurs se joignent par leur nom : l'application contacte la base à l'adresse db:5432, sans publier de port sur l'hôte. Le réseau bridge par défaut, lui, ne fournit pas cette résolution de noms.

8. Faire le ménage

Commande Ce qu'elle supprime
docker system df Rien : affiche l'espace occupé par images, conteneurs, volumes et cache
docker container prune Les conteneurs arrêtés
docker image prune -a Les images non utilisées
docker builder prune Le cache de construction
docker system prune Conteneurs arrêtés, réseaux inutilisés, images orphelines, cache

docker volume prune -a

Par défaut, docker volume prune (et docker system prune --volumes) ne supprime que les volumes anonymes inutilisés. Avec -a, il supprime aussi les volumes nommés qui ne sont rattachés à aucun conteneur : si vous avez supprimé un conteneur en comptant le recréer plus tard, ses données partent avec. Vérifiez avec docker volume ls avant.

9. Construire sa première image

Un Dockerfile minimal qui sert une page web statique :

FROM nginx:stable-alpine
COPY site/ /usr/share/nginx/html/
EXPOSE 80

Construire, puis lancer :

docker build -t mon-site:1.0 .
docker run -d --name mon-site -p 127.0.0.1:8081:80 mon-site:1.0
Instruction Rôle
FROM L'image de départ
RUN Une commande exécutée pendant la construction (installer un paquet)
COPY Copie des fichiers du projet dans l'image
WORKDIR Le dossier de travail
ENV Une variable d'environnement
EXPOSE Documente le port utilisé (ne publie rien)
USER L'utilisateur qui exécute l'application ; évitez root quand c'est possible
CMD / ENTRYPOINT La commande lancée au démarrage du conteneur

Ajoutez un fichier .dockerignore pour exclure du contexte de construction ce qui n'a rien à faire dans l'image (.git, fichiers .env, sauvegardes).

10. Antisèche

Je veux… Commande
Voir ce qui tourne docker ps
Lire les journaux en direct docker logs -f --tail 50 nom
Entrer dans un conteneur docker exec -it nom sh
Redémarrer un service docker restart nom
Mettre à jour une image docker pull image:tag, puis recréer le conteneur
Voir la consommation docker stats
Savoir ce qui occupe le disque docker system df
Tester une image en jetable docker run --rm -it image sh

Dès que vous avez plus d'un conteneur, ou des options longues à retenir, passez à Docker Compose : la configuration est écrite dans un fichier et se relance en une commande.

À retenir

  • Image = modèle, conteneur = instance, volume = données qui survivent au conteneur.
  • docker run -d --name … --restart unless-stopped -p 127.0.0.1:port:port -v volume:/chemin image:tag : le modèle de base.
  • docker ps, docker logs -f, docker exec -it … sh, docker stats pour suivre et dépanner.
  • Fixez les versions des images, préférez les images officielles, analysez-les avec Trivy.
  • Sauvegardez les volumes, et méfiez-vous de docker volume prune -a.

À lire aussi