Vue d’ensemble
Docker CLI est votre outil principal pour construire, exécuter et gérer les conteneurs et les images. Cet aide-mémoire couvre les commandes que vous utiliserez chaque jour : construire et extraire des images, exécuter et inspecter des conteneurs, gérer les volumes et les réseaux, nettoyer les ressources, et utiliser buildx pour les builds multi-plateforme. Tous les commandes sont à jour pour Docker Engine 27.
Images : build et gestion
| Commande | Fonction | Exemple |
|---|---|---|
docker build -t <name>:<tag> . |
Construire une image à partir d’un Dockerfile du répertoire actuel | docker build -t myapp:1.0 . |
docker build -f <dockerfile-path> -t <name>:<tag> <context> |
Construire avec un Dockerfile nommé | docker build -f Dockerfile.prod -t app:prod . |
docker build --build-arg <key>=<value> -t <name>:<tag> . |
Passer des arguments de build au processus de build | docker build --build-arg NODE_ENV=production -t app:prod . |
docker build -m <memory> -t <name>:<tag> . |
Limiter la mémoire pendant le build (ex: 1g) |
docker build -m 2g -t app:1.0 . |
docker build -t <name>:<tag> --no-cache . |
Désactiver la mise en cache des couches (reconstruire à partir de zéro) | docker build -t app:1.0 --no-cache . |
docker image ls |
Lister toutes les images du système | docker image ls |
docker images |
Raccourci pour lister les images | docker images |
docker images -a |
Lister toutes les images y compris les intermédiaires | docker images -a |
docker pull <image>:<tag> |
Télécharger une image à partir d’un registre | docker pull nginx:1.27 |
docker pull <registry>/<image>:<tag> |
Extraire à partir d’un registre privé | docker pull registry.example.com/myapp:1.0 |
docker tag <image>:<tag> <new-repo>:<new-tag> |
Créer une nouvelle étiquette pointant vers une image | docker tag myapp:1.0 registry.example.com/myapp:latest |
docker push <image>:<tag> |
Pousser une image vers un registre (suppose que le tag inclut le registre) | docker push registry.example.com/myapp:1.0 |
docker login <registry> |
S’authentifier auprès d’un registre Docker | docker login docker.io |
docker logout <registry> |
Supprimer l’authentification pour un registre | docker logout docker.io |
docker rmi <image>:<tag> |
Supprimer une image locale | docker rmi myapp:1.0 |
docker rmi -f <image>:<tag> |
Force-supprimer une image (même si en cours d’utilisation) | docker rmi -f myapp:1.0 |
docker image prune |
Supprimer les images en suspens (sans étiquette, inutilisées) | docker image prune |
docker image prune -a |
Supprimer toutes les images inutilisées | docker image prune -a |
docker inspect <image>:<tag> |
Afficher des informations détaillées sur une image | docker inspect nginx:1.27 |
docker history <image>:<tag> |
Afficher l’historique des couches dans une image | docker history myapp:1.0 |
Conteneurs : exécuter et interagir
| Commande | Fonction | Exemple |
|---|---|---|
docker run <image> |
Créer et exécuter un conteneur à partir d’une image | docker run ubuntu:latest |
docker run -d <image> |
Exécuter un conteneur en mode détaché (arrière-plan) | docker run -d nginx:latest |
docker run -it <image> <command> |
Exécuter de manière interactive avec un terminal | docker run -it ubuntu:latest bash |
docker run --name <name> <image> |
Donner au conteneur un nom personnalisé | docker run --name webserver nginx:latest |
docker run -p <host-port>:<container-port> <image> |
Mapper un port de l’hôte vers le conteneur | docker run -p 8080:80 nginx:latest |
docker run -p <host-ip>:<host-port>:<container-port> <image> |
Mapper un port vers une IP d’hôte spécifique | docker run -p 127.0.0.1:8080:80 nginx:latest |
docker run -e <VAR>=<value> <image> |
Passer une variable d’environnement | docker run -e DATABASE_URL=postgres://localhost <image> |
docker run --env-file <file> <image> |
Charger les variables d’environnement à partir d’un fichier | docker run --env-file .env app:latest |
docker run -v <host-path>:<container-path> <image> |
Monter un volume (bind mount) | docker run -v /data:/app/data app:latest |
docker run -v <volume-name>:<container-path> <image> |
Monter un volume nommé | docker run -v mydata:/app/data app:latest |
docker run -v <container-path> <image> |
Créer un volume anonyme | docker run -v /app/data app:latest |
docker run --mount type=bind,source=<host>,target=<container> <image> |
Monter avec la syntaxe explicite (plus lisible) | docker run --mount type=bind,source=/data,target=/app/data app:latest |
docker run --rm <image> |
Supprimer automatiquement le conteneur à la sortie | docker run --rm ubuntu:latest echo "hello" |
docker run -w <workdir> <image> |
Définir le répertoire de travail à l’intérieur du conteneur | docker run -w /app node:20 npm start |
docker run --user <uid>:<gid> <image> |
Exécuter avec un ID d’utilisateur spécifique | docker run --user 1000:1000 app:latest |
docker run --cpus <count> <image> |
Limiter les cœurs CPU (ex: 0.5 pour un demi-cœur) |
docker run --cpus 2 app:latest |
docker run -m <memory> <image> |
Limiter la mémoire (ex: 512m, 1g) |
docker run -m 512m app:latest |
docker run --restart=<policy> <image> |
Définir la politique de redémarrage : no, always, on-failure, unless-stopped | docker run --restart=always nginx:latest |
docker run --restart=on-failure:<max-retries> <image> |
Redémarrer seulement en cas d’échec, jusqu’à N fois | docker run --restart=on-failure:5 app:latest |
docker run --network <network> <image> |
Connecter le conteneur à un réseau spécifique | docker run --network mynet app:latest |
docker run --add-host <host>:<ip> <image> |
Ajouter des entrées à /etc/hosts à l’intérieur du conteneur | docker run --add-host example.com:192.168.1.10 app:latest |
docker run --cap-add <capability> <image> |
Ajouter des capacités Linux | docker run --cap-add SYS_ADMIN app:latest |
docker run --cap-drop <capability> <image> |
Supprimer les capacités Linux | docker run --cap-drop NET_RAW app:latest |
docker run --security-opt=no-new-privileges <image> |
Empêcher l’escalade de privilèges | docker run --security-opt=no-new-privileges app:latest |
Inspection et logs de conteneur
| Commande | Fonction | Exemple |
|---|---|---|
docker ps |
Lister les conteneurs en cours d’exécution | docker ps |
docker ps -a |
Lister tous les conteneurs (en cours d’exécution et arrêtés) | docker ps -a |
docker ps -l |
Afficher le dernier conteneur (le plus récent) | docker ps -l |
docker container ls |
Forme longue pour lister les conteneurs | docker container ls |
docker logs <container> |
Afficher les logs du conteneur | docker logs mycontainer |
docker logs -f <container> |
Afficher les logs en continu (suivi) | docker logs -f mycontainer |
docker logs --tail <lines> <container> |
Afficher seulement les N dernières lignes | docker logs --tail 50 mycontainer |
docker logs --since <time> <container> |
Afficher les logs depuis un moment spécifique (ex: 1h, 10m) |
docker logs --since 1h mycontainer |
docker logs --timestamps <container> |
Inclure les timestamps dans la sortie | docker logs --timestamps mycontainer |
docker inspect <container> |
Afficher la configuration JSON détaillée d’un conteneur | docker inspect mycontainer |
docker stats |
Afficher les stats CPU, mémoire, réseau et E/S en direct pour tous les conteneurs | docker stats |
docker stats <container> |
Afficher les stats pour un conteneur spécifique | docker stats mycontainer |
docker top <container> |
Afficher les processus en cours d’exécution à l’intérieur d’un conteneur | docker top mycontainer |
docker diff <container> |
Afficher les modifications du système de fichiers depuis le démarrage du conteneur | docker diff mycontainer |
docker port <container> |
Lister les mappages de ports pour un conteneur | docker port mycontainer |
Cycle de vie du conteneur
| Commande | Fonction | Exemple |
|---|---|---|
docker start <container> |
Démarrer un conteneur arrêté | docker start mycontainer |
docker stop <container> |
Arrêter élégamment un conteneur en cours d’exécution | docker stop mycontainer |
docker stop --time <seconds> <container> |
Attendre N secondes avant de tuer (par défaut 10) | docker stop --time 30 mycontainer |
docker kill <container> |
Force-arrêter un conteneur (SIGKILL) | docker kill mycontainer |
docker restart <container> |
Arrêter et démarrer un conteneur | docker restart mycontainer |
docker pause <container> |
Pauseun conteneur en cours d’exécution (geler les processus) | docker pause mycontainer |
docker unpause <container> |
Reprendre un conteneur en pause | docker unpause mycontainer |
docker rm <container> |
Supprimer un conteneur arrêté | docker rm mycontainer |
docker rm -f <container> |
Force-supprimer un conteneur en cours d’exécution | docker rm -f mycontainer |
docker container prune |
Supprimer tous les conteneurs arrêtés | docker container prune |
Exec : exécuter des commandes à l’intérieur de conteneurs en cours d’exécution
| Commande | Fonction | Exemple |
|---|---|---|
docker exec <container> <command> |
Exécuter une commande à l’intérieur d’un conteneur (non-interactif) | docker exec mycontainer ps aux |
docker exec -it <container> bash |
Exécuter bash de manière interactive à l’intérieur d’un conteneur | docker exec -it mycontainer bash |
docker exec -it <container> sh |
Exécuter sh (fonctionne dans les plus petites images sans bash) | docker exec -it mycontainer sh |
docker exec -u <user> <container> <command> |
Exécuter en tant qu’utilisateur spécifique | docker exec -u nobody mycontainer whoami |
docker exec -w <workdir> <container> <command> |
Exécuter dans un répertoire de travail spécifique | docker exec -w /app mycontainer npm start |
docker exec -e <VAR>=<value> <container> <command> |
Passer une variable d’environnement pour cette exécution | docker exec -e DEBUG=1 mycontainer app |
Volumes et stockage persistant
| Commande | Fonction | Exemple |
|---|---|---|
docker volume create <name> |
Créer un volume nommé | docker volume create mydata |
docker volume ls |
Lister tous les volumes | docker volume ls |
docker volume inspect <name> |
Afficher les informations détaillées sur un volume | docker volume inspect mydata |
docker volume rm <name> |
Supprimer un volume | docker volume rm mydata |
docker volume prune |
Supprimer les volumes inutilisés | docker volume prune |
docker volume prune -a |
Supprimer tous les volumes inutilisés (utiliser avec précaution) | docker volume prune -a |
Réseaux
| Commande | Fonction | Exemple |
|---|---|---|
docker network create <name> |
Créer un réseau bridge personnalisé | docker network create mynet |
docker network ls |
Lister tous les réseaux | docker network ls |
docker network inspect <name> |
Afficher les informations détaillées sur un réseau | docker network inspect mynet |
docker network connect <network> <container> |
Attacher un conteneur en cours d’exécution à un réseau | docker network connect mynet mycontainer |
docker network disconnect <network> <container> |
Détacher un conteneur d’un réseau | docker network disconnect mynet mycontainer |
docker network rm <name> |
Supprimer un réseau | docker network rm mynet |
docker network prune |
Supprimer les réseaux inutilisés | docker network prune |
Contexte (pour plusieurs hôtes Docker)
| Commande | Fonction | Exemple |
|---|---|---|
docker context ls |
Lister les contextes Docker disponibles | docker context ls |
docker context create <name> --description "<desc>" --docker "host=<host>" |
Créer un nouveau contexte (ex: pour un hôte distant) | docker context create prod --docker "host=ssh://user@prod.example.com" |
docker context use <name> |
Basculer vers un contexte Docker différent | docker context use prod |
docker context inspect <name> |
Afficher les détails d’un contexte | docker context inspect prod |
Nettoyage et maintenance du système
| Commande | Fonction | Exemple |
|---|---|---|
docker system prune |
Supprimer les conteneurs arrêtés, les images en suspens, les réseaux inutilisés | docker system prune |
docker system prune -a |
Aussi supprimer toutes les images inutilisées (pas seulement les en suspens) | docker system prune -a |
docker system prune --volumes |
Aussi supprimer les volumes inutilisés | docker system prune --volumes |
docker system df |
Afficher l’utilisation du disque par images, conteneurs et volumes | docker system df |
docker system events |
Stream les événements Docker en temps réel (pull, push, build, run, etc.) | docker system events |
Buildx : builds multi-plateforme
| Commande | Fonction | Exemple |
|---|---|---|
docker buildx ls |
Lister les pilotes de build disponibles et les plateformes | docker buildx ls |
docker buildx create --name <builder> |
Créer une nouvelle instance de builder | docker buildx create --name mybuilder |
docker buildx use <builder> |
Basculer vers un builder | docker buildx use mybuilder |
docker buildx build --platform <platforms> -t <image>:<tag> . |
Construire pour plusieurs plateformes (ex: linux/amd64,linux/arm64) |
docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 . |
docker buildx build --platform <platforms> --push -t <image>:<tag> . |
Construire et pousser l’image multi-plateforme vers un registre | docker buildx build --platform linux/amd64,linux/arm64 --push -t registry.example.com/app:1.0 . |
docker buildx build --platform <platforms> --output type=docker -t <image>:<tag> . |
Construire pour plusieurs plateformes et charger dans Docker local (une seule plateforme) | docker buildx build --platform linux/amd64 --output type=docker -t app:1.0 . |
Patterns à réutiliser
# Nettoyer tout (utiliser avec prudence !)
docker system prune -a --volumes
# Construire et étiqueter pour un registre en une étape
docker build -t registry.example.com/myapp:1.0 .
docker push registry.example.com/myapp:1.0
# Exécuter un conteneur temporaire, exécuter une commande et supprimer automatiquement
docker run --rm ubuntu:latest dpkg -l | grep nginx
# Copier des fichiers vers/depuis un conteneur
docker cp myfile.txt mycontainer:/app/myfile.txt
docker cp mycontainer:/app/output.log ./
# Obtenir l'adresse IP d'un conteneur en cours d'exécution
docker inspect mycontainer | grep '"IPAddress"'
# Inspecter une couche dans une image
docker history myapp:1.0
# Vérifier l'utilisation des ressources de tous les conteneurs
docker stats --all
# Trouver les conteneurs par image
docker ps -a --filter ancestor=nginx:latest
FAQ
Quelle est la différence entre docker run et docker start ?
docker run crée un nouveau conteneur à partir d’une image et le démarre ; docker start redémarre un conteneur arrêté. Utilisez run pour un nouveau travail, et start pour réutiliser un conteneur arrêté.
Comment exécuter un conteneur en arrière-plan ?
Utilisez docker run -d <image> pour le détacher. Le conteneur s’exécute en arrière-plan et vous obtenez l’ID du conteneur. Utilisez docker logs <id> pour voir la sortie.
Comment extraire une image privée d’un registre ?
Connectez-vous d’abord avec docker login -u <username> <registry>, puis docker pull <registry>/<image>:<tag>. Les identifiants sont mis en cache localement dans ~/.docker/config.json.
Comment supprimer les ressources Docker inutilisées ?
Utilisez docker system prune pour supprimer les conteneurs arrêtés, les images inutilisées et les volumes en suspens. Ajoutez -a pour supprimer toutes les images inutilisées (pas seulement les en suspens), et --volumes pour supprimer également les volumes inutilisés.
Comment exécuter une commande à l’intérieur d’un conteneur en cours d’exécution ?
Utilisez docker exec -it <container> bash (ou sh pour les images minimales). L’option -i maintient stdin ouvert, et -t alloue un pseudo-terminal pour l’interactivité.
Comment ce guide a été vérifié
Rédigé à la main à partir de la documentation officielle, chaque commande revérifiée, puis relu une seconde fois avant publication. Dernière relecture le .
Sources officielles consultées pour cet article

