Libérer l’espace disque pris par Docker – le retour
Fort de votre expérience sur la gestion des couches des images Docker, vous prêtez attention aux couches des conteneurs arrêtés. Soit en créant un conteneur avec l’option --rm
, soit en supprimant le conteneur plus tard.
Pourtant, malgré tous ces efforts pour libérer l’espace disque pris par Docker, ce dernier a encore pris le dessus et occupe une bonne partie de votre espace disque. Mais comment fait-il ?
Sommaire
Docker et les volumes
En surveillant, la taille du dossier /var/lib/docker
, il est possible de constater que le répertoire volumes
croit constamment… Un indice ?
Ayant fait récemment beaucoup de tests avec ElasticSearch sans préciser de montage de volume, je vérifie le dernier conteneur utilisé
$ docker inspect myelk_elasticsearch_1|jq '.[].Mounts'
[
{
"Name": "b317451b5d154b1d6875af8abec9841c93cd52428109f55df734f53ef887f877",
"Source": "/mnt/sda1/var/lib/docker/volumes/b317451b5d154b1d6875af8abec9841c93cd52428109f55df734f53ef887f877/_data",
"Destination": "/usr/share/elasticsearch/data",
"Driver": "local",
"Mode": "",
"RW": true
}
]
Je suis alors très surpris de découvrir qu’un volume est monté alors je n’ai rien demandé à Docker. En vérifiant le Dockerfile d’ElasticSearch, je constate que l’instruction VOLUME
correspond au dossier monté automatiquement. En fait, cette instruction permet d’indiquer à Docker qu’un dossier peut être partagé avec l’extérieur. Si aucun montage n’est spécifié à la création du conteneur, Docker le fait pour nous !
Il s’avère que le dossier /var/lib/docker/volumes
contient énormément de volumes inutilisés. Dès qu’un Dockerfile
utilise la commande VOLUME
, Docker monte un répertoire. Cela pose déjà un souci de sécurité dans le sens où des données se retrouvent stockées ici sans vraiment le savoir. De plus, Docker prend de plus en plus d’espace disque avec le temps.
Suppression des volumes inutiles
La première étape est de supprimer tous les volumes orphelins avec une commande qui ne nous est pas étrangère maintenant :
$ docker volume rm $(docker volume ls -qf "dangling=true")
Prenez le temps de vérifier que les volumes inutiles ne contiennent pas de données à conserver avant de lancer la suppression de tous ces volumes !
Suppression d’un conteneur et ses volumes
Vous aviez pris l’habitude de lancer des conteneur éphémères avec l’option --rm
? Il va maintenant prendre l’habitude d’ajouter l’option -v
lorsque vous supprimez un conteneur :
$ docker rm -fv myelk_elasticsearch_1
Attention : cette commande supprime tous les volumes utilisés par le conteneur !
Conclusion
Nous avons encore progressé sur l’administration d’un environnement Docker. Les couches et les volumes sont des éléments qu’il faut donc monitorer et superviser. Cette découverte lève tout de même un problème sur la sécurité. En effet, il faut être extrêmement vigilant sur la gestion des VOLUMES et s’assurer qu’un environnement Docker ne contienne pas de données résiduelles sensibles si elles ne sont plus utiles.
https://blog.lecacheur.com/2016/02/17/liberer-lespace-disque-pris-par-docker-le-retour/https://blog.lecacheur.com/wp-content/uploads/2014/10/docker.pnghttps://blog.lecacheur.com/wp-content/uploads/2014/10/docker-150x150.pngDéveloppementLinuxdockerFort de votre expérience sur la gestion des couches des images Docker, vous prêtez attention aux couches des conteneurs arrêtés. Soit en créant un conteneur avec l'option --rm, soit en supprimant le conteneur plus tard. Pourtant, malgré tous ces efforts pour libérer l'espace disque pris par Docker, ce dernier a...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
La lecture de la commande donnée en exemple m’a fait froncer les sourcils. Après vérification, car je me suis mis à douter, la syntaxe correcte est bien « docker volume » au singulier (et non pas « docker volumes »).
Oops ! C’est corrigé. Merci !
Bonjour,
Je ne suis pas un expert du docker mais j’ai je travaille sur système dont une des machines à un docker(…)
Sur cette machine le repertoire /var/lib/docker/overlay est bientôt à saturation.. et tout le monde est en wacances!!!
Bientôt à 100% sur cette VM j’aimerais faire du nettoyage, j’ai essayé plsuiers commandes dokers mais rien n’y fait
Je ne sais comment nettoyer/vider ce repertoire là?
Je vois que les ‘fichiers’ peuvent être séparés en 3 groupes par dates… (date de restart du système -> AC)
Comment puis je supprimer les plus anciens pour liberer (beaucoup) d’espace?
Puis je les supprimer directement par un rm? ou bien faut il utiliser des cmd dockers?
Et du coup lesquelles sachant que j’en ai déjà passée quelques unes…?
(Eventuellement une partie des plus récents ‘fichiers’ pourrait elle aussi être supprimée?
Merci
Je ne peux pas vous faire un « image » copié coller ect je n’ai pas le droit(…), mais c’est du genre
ll
3 mars 2019 E678904ABEF456FE8
3 mars 2019 F89AE0DEC3458AE45
3 mars 2019 AE0DEC04ABE04A04A
3 mars 2019 6FE889904DEC3904
3 mars 2019 E678904ABE904ABEF
19 novembre 2019 6FAEF904ABEF45FE8
19 novembre 2019 A678904ABEF45EF41
19 novembre 2019 C678904ABFFF504A
19 novembre 2019 E67CDEF04EF456FE8
19 novembre 2019 A67904EF49EF90490
19 novembre 2019 FFFFF678904AB56FE