Docker : les commandes essentielles

mis à jour le 2026-07-01#docker#cli#cheatsheet

Cycle de vie

Lancer, lister, arrêter, supprimer : 90 % de ton quotidien Docker tient dans ces quatre commandes. Retiens surtout que docker ps seul ne montre que les conteneurs en cours d'exécution — ajoute -a pour voir aussi les arrêtés.

shell
docker run -d --name web -p 8080:80 nginx:1.27   # lancer en arrière-plan / run detached
docker ps -a                                     # tous les conteneurs / all containers
docker stop web                                  # arrêt propre (SIGTERM) / graceful stop
docker start web                                 # relancer un conteneur arrêté / restart a stopped one
docker rm web                                    # supprimer (doit être arrêté) / remove (must be stopped)

⚠️ docker rm -f web force la suppression d'un conteneur en marche (SIGKILL, sans arrêt propre). Pratique en dev, à éviter sur une base de données en prod.

Inspecter & déboguer

Un conteneur qui ne répond pas ? Dans l'ordre : les logs, puis un shell dedans, puis les métadonnées complètes. stats te dit en direct qui mange ta RAM.

shell
docker logs -f --tail 100 web        # suivre les 100 dernières lignes / follow last 100 lines
docker exec -it web sh               # shell dans le conteneur / shell inside the container
docker inspect web                   # tout le JSON : IP, mounts, env / full JSON: IP, mounts, env
docker inspect -f '{{.State.Status}}' web   # un champ précis / one specific field
docker stats                         # CPU/RAM en temps réel / live CPU/RAM

Astuce : docker exec exige un conteneur en marche. S'il crashe au démarrage, lis d'abord docker logs web, puis inspecte le code de sortie avec docker inspect -f '{{.State.ExitCode}}' web.

Images

Une image est le modèle, le conteneur en est une instance. Pine toujours une version (nginx:1.27), jamais latest en prod : latest change sous tes pieds à chaque pull.

shell
docker pull nginx:1.27                     # télécharger / download
docker images                              # lister les images locales / list local images
docker build -t monapp:1.0 .               # construire depuis un Dockerfile / build from Dockerfile
docker tag monapp:1.0 registry.example.com/monapp:1.0
docker push registry.example.com/monapp:1.0
docker rmi monapp:1.0                      # supprimer une image / remove an image

Volumes & réseaux

Les données vivent dans les volumes, pas dans le conteneur : supprimer un conteneur ne touche pas ses volumes nommés. Les réseaux permettent aux conteneurs de se parler par leur nom (DNS interne).

shell
docker volume create data
docker run -d --name db -v data:/var/lib/postgresql/data postgres:16
docker volume ls
docker volume inspect data                 # où c'est stocké sur l'hôte / where it lives on the host

docker network create backend
docker network connect backend web         # web peut joindre db par son nom / web can reach db by name
docker network ls

⚠️ docker volume rm data détruit les données définitivement. Vérifie qu'aucun conteneur ne l'utilise et que tu as une sauvegarde.

Les pièges

  • Le conteneur "s'arrête tout seul" : un conteneur vit tant que son processus principal (PID 1) tourne. Si ta commande se termine (ou passe en daemon), le conteneur s'arrête. C'est normal.
  • -p 8080:80 dans le mauvais sens : c'est toujours hôte:conteneur. Le port de gauche est celui que tu ouvres dans ton navigateur.
  • Modifier un fichier dans le conteneur : perdu au prochain rm + run. Toute donnée à conserver passe par un volume ou un bind mount.

Aller plus loin

Ces commandes sont la surface ; pour comprendre ce qui se passe dessous (images, layers, isolation, Compose), suis le guide Docker fondamentaux du parcours.