2.6 Nettoyer un peut notre bazaar et libérer de l'espace
Nettoyer Docker et libérer de l'espace
Docker est un outil incroyable, mais il a un léger défaut : c'est un accumulateur compulsif. Si vous ne faites pas attention, entre les anciens conteneurs arrêtés et les dizaines d'images téléchargées pour des tests, Docker va discrètement engloutir des dizaines de gigaoctets sur votre disque dur.
Il est temps de sortir le balai et d'apprendre à faire le ménage.
1. Supprimer les images : docker rmi
On a vu comment supprimer un conteneur avec docker rm. Mais rappelez-vous : le conteneur n'est que le résultat final (le gâteau). Ce qui pèse vraiment lourd, c'est l'image de base qui a servi à le créer (le moule).
Pour voir toutes les images stockées sur votre PC, tapez :
➜ ~ docker images
Vous verrez une liste avec le poids de chaque image (certaines bases de données ou frameworks peuvent peser plus d'un gigaoctet !).
Pour supprimer une image dont vous n'avez plus besoin, on utilise docker rmi (pour Remove Image) suivi du nom de l'image ou de son ID :
➜ ~ docker rmi postgres:18
docker rm), puis l'image (docker rmi).2. L'arme de destruction massive : docker system prune
Supprimer les éléments un par un à la main, c'est bien pour comprendre, mais au quotidien on n'a pas le temps pour ça. Heureusement, Docker a prévu la commande ultime de nettoyage :
➜ ~ docker system prune
Quand vous lancez cette commande, Docker va vous demander confirmation, car il s'apprête à faire un grand ménage automatique. Il va supprimer :
- Tous les conteneurs arrêtés.
- Tous les réseaux qui ne sont utilisés par aucun conteneur.
- Toutes les images "dangling" (ce sont des images fantômes qui n'ont plus de nom ni de tag, souvent créées suite à des erreurs de compilation).
- Tout le cache de compilation inutile.
3. Le nettoyage extrême
Si votre disque dur est vraiment dans le rouge, vous pouvez ajouter une petite option nucléaire à la commande précédente : le flag -a (pour all).
➜ ~ docker system prune -a
Là, Docker ne va pas faire dans le détail. En plus de ce qu'on a vu au-dessus, il va supprimer absolument TOUTES les images qui ne sont pas actuellement rattachées à un conteneur en cours d'exécution.