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

Share.

Les commentaires sont fermés.