Libérer l'espace
Docker
Aide-mémoire des commandes de nettoyage
Du diagnostic au nettoyage radical
Trois niveaux de nettoyage
On va du plus doux au plus radical. Toujours commencer par regarder ce qui occupe l'espace avant d'agir.
1
Ciblé
prune par catégorie - conteneurs, images, volumes, réseaux
2
Global
docker system prune - une commande pour tout
3
Radical
tout arrêter, tout supprimer - à utiliser avec précaution
Diagnostic - voir l'espace utilisé
Toujours faire un diagnostic avant d'agir. Permet de cibler les gros consommateurs et d'éviter les surprises.
| Commande | Effet |
|---|---|
docker system df |
Résumé global par catégorie - images, conteneurs, volumes, build cache |
docker system df -v |
Détail ligne par ligne avec taille de chaque image, conteneur et volume |
docker images |
Liste toutes les images avec leur taille |
docker ps -a |
Liste tous les conteneurs, même ceux arrêtés |
docker volume ls |
Liste tous les volumes (nommés et anonymes) |
Niveau 1 - Conteneurs arrêtés
Supprimer les conteneurs arrêtés
docker container prune
Supprime tous les conteneurs avec le statut Exited. Les conteneurs en marche (Up) ne sont pas touchés.
Sans risque - aucune donnée n'est perdue tant que les volumes restent en place. Les volumes anonymes attachés au conteneur, par contre, restent orphelins.
Niveau 1 - Images inutiles
Supprimer les images dangling (intermédiaires de builds)
docker image prune
Supprime les images marquées
<none>. Souvent le plus gros gain après plusieurs builds.Supprimer aussi les images non utilisées par un conteneur
docker image prune -a
Plus agressif - supprime toute image qui n'est référencée par aucun conteneur, même celles qui ont un tag. À ne lancer que si on accepte de retélécharger.
Niveau 1 - Volumes orphelins
Supprimer les volumes non utilisés
docker volume prune
Supprime les volumes qui ne sont attachés à aucun conteneur. Inclut les volumes anonymes laissés derrière par d'anciens conteneurs.
ATTENTION Les volumes contiennent les données persistantes - bases de données, configurations, fichiers utilisateurs. Toujours faire
docker volume ls avant pour confirmer qu'aucun volume nommé important n'est listé comme orphelin.Niveau 1 - Réseaux inutilisés
Supprimer les réseaux orphelins
docker network prune
Supprime les réseaux qui ne sont reliés à aucun conteneur. Les réseaux par défaut (bridge, host, none) sont protégés.
Gain en espace minime, mais utile pour garder une liste propre quand on jongle avec plusieurs piles docker compose.
Niveau 2 - Nettoyage global
Une commande pour tout (sauf volumes)
docker system prune
Combine conteneurs arrêtés, images dangling, réseaux et build cache. Les volumes sont préservés.
Avec les images non taggées en plus
docker system prune -a
Ajoute toutes les images non utilisées par un conteneur en marche. Demande à retélécharger ce dont on a besoin la prochaine fois.
Tout - volumes inclus
docker system prune -a --volumes
Le grand nettoyage. Inclut tous les volumes orphelins. Données persistantes potentiellement perdues - voir avertissement.
Niveau 3 - Cas extrêmes
Quand on veut repartir à zéro complètement, par exemple après un cours, avant une démo ou pour résoudre un état corrompu.
Arrêter et supprimer tous les conteneurs
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
Aucun conteneur ne survit, qu'il soit en marche ou arrêté.
Supprimer toutes les images
docker rmi $(docker images -q)
Toutes les images locales disparaissent. Tout sera retéléchargé au prochain build ou pull.
RAPPEL Ces commandes ne demandent pas de confirmation. Vérifier deux fois avant d'appuyer sur Entrée, surtout sur un poste de travail partagé ou un serveur de production.
Bonnes pratiques
1
Diagnostic d'abord
Toujours docker system df -v avant un prune pour voir où va l'espace.
2
Ciblé avant global
Préférer un prune par catégorie - on garde le contrôle sur ce qui est supprimé.
3
Volumes nommés protégés
Sans --volumes, les volumes nommés (postgres, mariadb, configs) restent intacts.
4
Sauvegarde avant le grand ménage
Avant --volumes, exporter les bases de données importantes.
5
Routine régulière
Un docker image prune hebdomadaire suffit souvent à éviter le débordement.
6
Script réutilisable
Sauvegarder un script nettoyer-docker.sh avec diagnostic puis prune ciblé.