Comme je l’ai indiqué dans mes articles précédents sur les volumes, Docker ne supprime jamais de lui-même un volume lors de la disparition d’un conteneur. Ce qui signifie que vous avez probablement plein de volumes orphelins 🙂
Supprimer un volume en supprimant un conteneur
Lors de la suppression d’un conteneur, vous avez la possibilité de suprrimer explicitement le volume attaché en même temps grâce à l’option -v
de la commande docker rm
.
Par exemple cette commande supprime le volume 8b5
et le volume attaché :
# docker rm -v 8b5
8b5
Supprimer les conteneurs orphelins
Les conteneurs orphelins peuvent être listés avec la commande docker volume ls
en spécifiant l’option -f dangling=true
.
Exemple :
# docker volume ls -f dangling=true
DRIVER VOLUME NAME
local 7a580f460fb61a5ed77b70c2e05320315de22ad9a684692854418bc77eeffa35
local 424713fe7be69256b5d876f01307db33ff969244f2618005823ad0dd5c4b4834
local 0afb23ec7f105227efd8702671133e0b4fa52d3d63e57419f76ba470124b1340
local 5449a081d53f1909e11aa8c7fe9f69626e69c34f843ae252036e65891f61f033
local 223aa9f8a5b6285912e0d3834e928b12f2304f3c63ef6624dbaad66b915cbd4f
Pour supprimer tous ces volumes en une fois, j’utilise une petite combinaison de commandes Linux :
# docker volume ls -qf dangling=true | xargs -r docker volume rm
L’option
-q
que j’ai ajouté correspond à l’optionquiet
qui n’affiche que les identifiants de volumes, sans en-tête ou colonneDRIVER
Si je liste de nouveau les volumes orphelins, je n’ai plus rien :
# docker volume ls -f dangling=true
DRIVER VOLUME NAME
Et voilà, à vous de voir ensuite si vous voulez faire ce nettoyage manuellement régulièrement ou positionner cette routine dans un fichier cron
.
Leave a Reply