Linux

🐳 Docker — Cheatsheet

Toutes les commandes Docker essentielles en un coup d'œil. Images, conteneurs, volumes, réseaux, Compose et nettoyage.

← Retour aux cheatsheets
📚 C'est quoi Docker en deux mots ? Docker permet de faire tourner des applications dans des conteneurs — des mini-environnements isolés, un peu comme des machines virtuelles ultra-légères. Chaque conteneur embarque tout ce dont l'application a besoin (code, dépendances, config). Les principaux concepts :
  • Image = le modèle (comme un ISO). Elle ne change pas.
  • Conteneur = une instance en cours d'exécution d'une image (comme une VM allumée).
  • Volume = un espace de stockage persistant (les données survivent au redémarrage).
  • Réseau = un réseau virtuel pour que les conteneurs communiquent entre eux.
  • Compose = un fichier YAML qui décrit plusieurs conteneurs à lancer ensemble.

📦 Images

Une image, c'est un modèle prêt à l'emploi. On la télécharge depuis Docker Hub (le "store" de Docker) ou on la construit soi-même avec un Dockerfile.

Commande Description
docker pull <image> Télécharger une image depuis Docker Hub
docker images Lister toutes les images locales
docker rmi <image> Supprimer une image
docker build -t <nom> . Construire une image depuis un Dockerfile
docker tag <image> <nouveau_nom> Renommer / taguer une image

▶️ Conteneurs

Un conteneur est une image en cours d'exécution. On peut le démarrer, l'arrêter, le supprimer — comme allumer/éteindre une VM. L'option -d (detached) le lance en arrière-plan.

Commande Description
docker run <image> Lancer un conteneur
docker run -d <image> Lancer en arrière-plan (detached)
docker run -it <image> bash Lancer en mode interactif
docker run --name <nom> <image> Donner un nom au conteneur
docker run -p 8080:80 <image> Mapper un port (hôte:conteneur)
docker run -e VAR=valeur <image> Passer une variable d'environnement
docker run -v /host:/container <image> Monter un volume
docker run --restart unless-stopped <image> Redémarrage automatique
docker ps Lister les conteneurs actifs
docker ps -a Lister tous les conteneurs (y compris arrêtés)
docker stop <conteneur> Arrêter un conteneur
docker start <conteneur> Relancer un conteneur arrêté
docker restart <conteneur> Redémarrer un conteneur
docker rm <conteneur> Supprimer un conteneur

🔍 Inspection & Logs

Pour comprendre ce qui se passe dans un conteneur : logs affiche les messages de l'application, inspect donne la config technique complète, et stats montre les ressources utilisées en temps réel.

Commande Description
docker logs <conteneur> Voir les logs du conteneur
docker logs -f <conteneur> Suivre les logs en temps réel
docker inspect <conteneur> Détails complets du conteneur (JSON)
docker stats Ressources en temps réel (CPU, RAM, réseau…)
docker top <conteneur> Voir les processus dans un conteneur

💻 Exécuter dans un conteneur

docker exec permet d'entrer dans un conteneur qui tourne déjà — un peu comme se connecter en SSH à un serveur. Très utile pour débugger ou explorer les fichiers à l'intérieur.

Commande Description
docker exec -it <conteneur> bash Ouvrir un terminal dans le conteneur
docker exec <conteneur> <commande> Exécuter une commande dans le conteneur
docker cp <fichier> <conteneur>:/chemin Copier un fichier dans le conteneur
docker cp <conteneur>:/chemin <fichier> Copier un fichier depuis le conteneur

💾 Volumes

Par défaut, les données d'un conteneur sont perdues quand on le supprime. Un volume permet de sauvegarder les données en dehors du conteneur (base de données, fichiers uploadés, config…).

Commande Description
docker volume create <nom> Créer un volume
docker volume ls Lister les volumes
docker volume inspect <nom> Détails d'un volume
docker volume rm <nom> Supprimer un volume
docker run -v <volume>:/data <image> Utiliser un volume nommé

🌐 Réseaux

Docker crée des réseaux virtuels pour isoler les conteneurs. Ceux sur le même réseau peuvent se parler par leur nom (ex : ping wordpress depuis un autre conteneur du même réseau).

Commande Description
docker network create <nom> Créer un réseau
docker network ls Lister les réseaux
docker network inspect <nom> Détails d'un réseau
docker network connect <réseau> <conteneur> Connecter un conteneur à un réseau
docker network disconnect <réseau> <conteneur> Déconnecter un conteneur d'un réseau
docker run --network <réseau> <image> Lancer un conteneur sur un réseau spécifique

🧩 Docker Compose

Docker Compose permet de décrire toute une stack (plusieurs conteneurs, réseaux, volumes) dans un seul fichier docker-compose.yml. Une seule commande pour tout lancer ou tout arrêter.

Commande Description
docker compose up Lancer les services définis dans docker-compose.yml
docker compose up -d Lancer en arrière-plan
docker compose down Arrêter et supprimer les conteneurs
docker compose down -v Arrêter et supprimer les conteneurs + volumes
docker compose ps Lister les conteneurs Compose
docker compose logs Voir les logs de tous les services
docker compose logs -f <service> Suivre les logs d'un service en temps réel
docker compose build Construire les images depuis les Dockerfiles
docker compose pull Télécharger les dernières images
docker compose restart Redémarrer les services
docker compose exec <service> bash Ouvrir un shell dans un service
docker compose config Vérifier / afficher la configuration YAML
docker compose up --scale <service>=3 Lancer plusieurs instances d'un service

🧹 Nettoyage

Docker accumule des fichiers avec le temps (images téléchargées, conteneurs arrêtés, volumes orphelins). Ces commandes permettent de faire le ménage et récupérer de l'espace disque.

⚠️ Attention docker system prune -a supprime toutes les images non utilisées. À utiliser avec prudence en production !
Commande Description
docker system prune Supprimer conteneurs arrêtés, réseaux inutilisés, images sans tag
docker system prune -a Tout nettoyer (y compris images non utilisées)
docker volume prune Supprimer les volumes orphelins
docker image prune Supprimer les images inutilisées
💡 Astuce Ajoutez l'alias alias dk='docker' et alias dkc='docker compose' dans votre ~/.bashrc pour taper vos commandes encore plus vite !