Nettoyer Docker

Update 13/11/2017:

Docker à introduit des commandes intéressantes pour le nettoyage.

docker system prune va supprimer:

  • Tous les conteneurs stoppés
  • Tous les volumes qui ne sont pas utilisés par au moins un conteneur.
  • Tous les networks qui ne sont pas utilisés par au moins un conteneur.
  • Toutes les images 'dangling'

On a de plus docker image prune -a, qui va supprimer toutes les images qui n'ont pas au moins un conteneur associé lancé.

Article original:

Docker à la fâcheuse habitude de laisser traîner plein de choses sur votre système. Fonctionnant par layers, après moults commandes build passées, beaucoup de ces layers ne sont plus utiles.

Aussi, quand vous jouez avec les volumes, quand vous supprimez un container qui avait des volumes, Docker ne supprime pas le volume associé à moins que vous précisiez -v lors de votre docker rm.

Donc, quelques commande de cleans bien utiles :

Images

  • Tuer tous les conteneurs qui tournent :
docker kill $(docker ps -q)
  • Effacer tous les conteneurs stoppés :
docker rm $(docker ps -a -q)
  • Effacer toutes les images "dangling" (efface les layers qui ne mènent à aucune image définitive, safe)
docker rmi $(docker images -q -f dangling=true)
  • Effacer toutes les images (unsafe si vous avez build vos propres images)
docker rmi $(docker images -q)

Volumes

Depuis la version 1.9, Docker dispose d'une commande built-in pour le nettoyage des volumes :

  • Effacer les volumes liés à aucun container
docker volume rm $(docker volume ls -qf dangling=true)

Personnellement, j'ai gagné 30 Go rien qu'en supprimant les images dangling sur ma vm de dev.

Sources : ici et .

Damien Gustave

Read more posts by this author.