Docker commandes
Restart Servive Docker
sudo systemctl restart docker
Inspect Container
docker inspect NOM_DU_CONTAINER | grep -E '(Image|Volumes|Network|"Path"|Status|tmp|HostPort|HostIp|IPAddress|Type|Source|Destination|com.docker.compose.project.working_dir)'
Liste images
docker images
Taille image
docker image inspect mon-image:latest --format='{{.Size}}' | numfmt --to=iec
statistiques globales
Montre l'espace utilisé par toutes les images, conteneurs et volumes.
docker system df
Processus
- Vérifier les processus détaillés
docker exec -it CONTAINER_NAME ps aux
Docker natif
Pour lancer un conteneur Docker sans démarrer Docker Desktop sur Ubuntu, vous devez utiliser le démon Docker directement via la ligne de commande. - Démarrez le service Docker natif
sudo systemctl start docker
- Vérifiez que le démon Docker fonctionne
sudo systemctl status docker
- Désactivez Docker Desktop au démarrage
systemctl --user disable docker-desktop
- Forcer Docker CLI à utiliser le socket natif
Modifiez la variable d’environnement DOCKER_HOST pour pointer vers le socket système :
(Pour que cela persiste après un redémarrage, ajoutez cette ligne dans ~/.bashrc ou ~/.zshrc.)
export DOCKER_HOST=unix:///var/run/docker.sock
- Désactiver Docker Desktop (si vous ne l’utilisez plus)
systemctl --user stop docker-desktop
systemctl --user disable docker-desktop
Volumes orphelins
Lister les volumes inutilisés
docker volume ls -qf dangling=true
Les supprimer
docker volume rm $(docker volume ls -qf dangling=true)
Mettre à jour un container 🔥
| Besoin | Commande recommandée |
|---|---|
| Rebuild simple | docker compose up -d --build
|
| Rebuild sans cache | docker compose build --no-cache && docker compose up -d
|
| Recréer containers proprement | docker compose up -d --force-recreate
|
| Tout supprimer puis repartir propre | docker compose down && docker compose up -d --build
|
Mettre à jour le FROM
|
docker compose build --pull
|
Pratiques
Images
Afficher ID + nom + tag
docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}"
Trier uniquement les images uniques (comme -q) mais avec noms
docker images --format "{{.ID}} {{.Repository}}:{{.Tag}}" | sort -u
Scripts
Docker stop
Stop et supprime tous les conteneurs
#!/bin/bash
# Arrêter tous les conteneurs en cours d'exécution
docker stop $(docker ps -q)
# Supprimer tous les conteneurs
docker rm $(docker ps -a -q)
docker system prune -f
echo "Tous les conteneurs ont été supprimés."
Docker clean
Stop tous les containers, supprime les images, supprime les volumes
#!/bin/bash
# Arrêter tous les conteneurs en cours d'exécution
docker stop $(docker ps -q)
# Supprimer tous les conteneurs
docker rm $(docker ps -a -q)
# Supprimer toutes les images
docker rmi $(docker images -q)
# Supprimer tous les volumes
docker volume rm $(docker volume ls -q)
echo "Tous les conteneurs, images et volumes Docker ont été supprimés."
docker system prune -f
Divers
Commandes de base
- Liste les conteneurs. Par défaut, seuls les conteneurs en cours d'exécution sont affichés. L'option -a permet d'afficher tous les conteneurs, y compris ceux qui sont arrêtés.
docker container ls [-a]
- Crée puis démarre un nouveau conteneur à partir d'une image donnée. Si l'image n'existe pas localement, Docker tente de la télécharger depuis le registre configuré, par défaut Docker Hub. Chaque exécution de cette commande crée un nouveau conteneur.
docker container run image_de_base
- Crée un nouveau conteneur à partir d'une image donnée, sans le démarrer. Le conteneur est simplement préparé avec sa configuration et pourra être démarré ensuite avec docker container start.
docker container create image_de_base
- Arrête proprement un conteneur en cours d'exécution. Docker envoie d'abord un signal d'arrêt au processus principal du conteneur, puis force l'arrêt si le conteneur ne s'arrête pas dans le délai prévu.
docker container stop nom_conteneur
- Démarre un conteneur existant qui est actuellement arrêté. Contrairement à docker container run, cette commande ne crée pas de nouveau conteneur.
docker container start nom_conteneur
- Attache le terminal courant aux flux standards d'un conteneur en cours d'exécution, c'est-à-dire à son entrée standard, sa sortie standard et sa sortie d'erreur. Cette commande permet d'interagir avec le processus principal du conteneur si celui-ci accepte une entrée interactive.
docker container attach nom_conteneur
- Exécute une commande supplémentaire dans un conteneur déjà en cours d'exécution. Cette commande est souvent utilisée pour ouvrir un shell ou lancer une commande de diagnostic dans un conteneur actif.
docker container exec nom_conteneur commande
- Supprime un ou plusieurs conteneurs arrêtés. Par défaut, Docker refuse de supprimer un conteneur encore en cours d'exécution, sauf si une suppression forcée est demandée avec une option adaptée.
docker container rm nom_conteneur
- Supprime tous les conteneurs arrêtés. Cette commande ne touche pas aux conteneurs en cours d'exécution. Elle ne supprime pas non plus les images, les volumes ou les réseaux Docker. Elle est utile pour nettoyer les anciens conteneurs créés par des commandes docker container run ou docker compose, lorsqu'ils ne sont plus nécessaires. Docker demande une confirmation avant suppression, sauf si l'option -f est utilisée.
docker container prune
- Supprime tous les conteneurs arrêtés sans demander de confirmation.
docker container prune -f
- Affiche les logs d'un conteneur. Cette commande fonctionne aussi bien pour un conteneur en cours d'exécution que pour un conteneur arrêté, tant que ses logs existent encore. L'option -f permet de suivre les nouveaux logs en temps réel.
docker container logs [-f] nom_conteneur
- Affiche en temps réel les statistiques d'utilisation des ressources d'un ou plusieurs conteneurs, notamment le CPU, la mémoire, le trafic réseau et les entrées/sorties disque.
docker container stats nom_conteneur
- Affiche les informations détaillées d'un conteneur au format JSON, comme sa configuration, son état, ses variables d'environnement, ses montages, ses réseaux, ses ports et ses paramètres d'exécution. Cette commande fonctionne aussi bien sur un conteneur actif que sur un conteneur arrêté.
docker container inspect nom_conteneur
Commandes avec paramètres
#la commande pour my-mariadb va créer un répertoire par défaut (on ne peut pas le spécifier nous même)
docker run --name my-mariadb --detach --env MYSQL_ROOT_PASSWORD=root --network db-network -v /var/lib/mysql mariadb
docker run --network db-network --detach --publish 7080:8080 adminer
#permet de créer l'image de contacts_nginx_prod
docker build --target contacts_nginx_prod -t $USER/demo-contacts-web:1.0.0 .