Les images utilisées pour créer des containers Docker peuvent bien entendu être mises à jour. Cependant, Docker conserve les anciennes images, qui ne servent pas à grand chose à part occuper de l'espace disque. Découvrons comment mettre à jour les images Docker et supprimer les anciennes automatiquement grâce à Watchtower.
Dans un précédent article, nous avons vu comment installer le plugin Docker sur OpenMediaVault et également comment créer un container MariaDB.
Si vous souhaitez mettre à jour une image d'un container Docker, sur OpenMediaVault, vous devez sélectionner l'image et cliquer sur le bouton "Tirer l'image" (pull). Cela a pour conséquence de vérifier s'il existe une image plus récente (une mise à jour donc) et de la télécharger.
L'inconvénient est qu'il faut réaliser cette tâche manuellement pour pouvoir bénéficier des dernières fonctionnalités des images de vos containers.
Watchtower permet d'automatiser cette récupération d'image plus récente. Aussi, le container utilisant l'image sera reconstruit avec la nouvelle image.
Pour l'installer sur OpenMediaVault, il suffit de créer un nouveau container Docker.
Sur l'interface d'OMV, rendez-vous dans le plugin Docker puis, via le moteur de recherche en haut à droite, recherchez l'image "watchtower" de chez v2tec :
Téléchargez l'image en cliquant sur le bouton "Démarrer" dans la fenêtre qui s'est ouverte :
Une fois l'image téléchargée, créez un container via le bouton "Démarrer l'image", en ayant au préalable sélectionnée l'image "v2tec/watchtower" :
Dans la fenêtre qui s'ouvre, renseignez un nom de container, une stratégie de redémarrage ("unless-stopped" pour ma part), et le mode de réseau sur "Host" :
Toujours dans cette fenêtre de paramétrage, dans la section "Extra arguments", ajoutez cette ligne :
-v /var/run/docker.sock:/var/run/docker.sock
Finalisez la création du container en cliquant sur le bouton "Enregistrer".
Le container Watchtower va démarrer et au bout de quelques secondes/minutes, vous aurez certainement une image en plus. On peut apercevoir qu'il y a maintenant deux images MariaDB :
Watchtower a donc téléchargé automatiquement la nouvelle image et a également recréé et démarré un container qui possédait l'image MariaDB.
Vous avez maintenant une récupération automatique de la dernière image disponible et une actualisation de vos containers.
Cependant, au fil du temps, les images obselètes vont s'accumuler. Pour palier à ce problème, vous pouvez créer une tâche planifiée dans OpenMediaVault (dans Système > Tâches planifiées) qui va exécuter une commande pour supprimer ces images.
Cliquez sur le bouton "Ajouter" et renseignez le formulaire qui s'est ouvert :
Pour ma part, la tâche s'exécute tous les jours et lance la commande suivante qui permet de supprimer les images obselètes :
docker image prune -f
Après exécution, l'image est bien supprimée :