Nettoyer les volumes Docker orphelins

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’option quiet qui n’affiche que les identifiants de volumes, sans en-tête ou colonne DRIVER

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.

Docker et les volumes de données (2/2)

Avec le premier article nous avons pu créer des volumes de données et les exploiter dans nos conteneurs. Maintenant, que se passe-t-il lorsque le conteneur doit être détruit pour être remplacer par un autre ? Que deviennent les données considérées comme « persistantes » ? Comme nous l’avons vu, le volume de données ne sera pas détruit automatiquement par Docker. Le volume sera donc « orphelin ».

Dans ce deuxième article sur la gestion des données persistantes avec Docker, nous allons voir ce qui tourne autour du recyclage des volumes, des conteneurs de données et des volumes nommés.

Continuer la lecture de « Docker et les volumes de données (2/2) »

Docker et les volumes de données (1/2)

Vous venez de créer vos premiers conteneurs Docker et peut-être ne vous êtes pas encore demandé ce qu’il advient des données stockées à l’intérieur. Alors par défaut, les données contenues dans le conteneur disparaissent tout simplement avec lui lors de sa destruction. Ce peut être le comportement voulu dans la plupart des cas, mais il est parfois nécessaire de rendre les données persistantes. Par exemple, une base de données utilisateur ne devrait pas disparaitre lorsque l’on supprime le conteneur contenant le moteur de la base de données !

Docker offre plusieurs manières de gérer les données persistantes. Nous verrons dans un premier temps la notion de volume de données puis les conteneurs de données dans un deuxième article.

Continuer la lecture de « Docker et les volumes de données (1/2) »