Watchtower Docker auto-update

L’article XDA sur l’épinglage des images Docker à latest est une leçon que chaque opérateur d’homelab apprend de la manière difficile : latest se déplace sans demander, et un seul pull mal exécuté peut casser une pile que vous ne pouvez pas restaurer. Les outils ci-dessous vous donnent une voie médiane : notifier les nouvelles images, épingler aux vrais tags, et mettre à jour selon un calendrier que vous contrôlez. Sept choix pour Docker, Podman, Compose, Swarm et Kubernetes.

Ce qu’il faut rechercher dans une mise à jour automatique de conteneur

Le bon choix dépend de l’échelle, pas de la préférence. Pesez :

Comparaison rapide

App Meilleur pour Runtime Gratuit Notifications Auto-apply
Watchtower Hôtes homelab solo Docker Oui Oui Oui
Diun Notification uniquement, pas d’auto-apply Docker, Podman, Kubernetes Oui Oui Non
Ouroboros Alternative ancienne de Watchtower Docker Oui Oui Oui
Podman auto-update Podman systemd natif Podman Oui Non Oui
Shepherd Services Docker Swarm Docker Swarm Oui Non Oui
Renovate Compose ou Kubernetes gérés par GitOps Tous (via git) Oui (open source) Oui Via PRs
Portainer Mises à jour manuelles avec GUI Docker, Swarm, Kubernetes Free CE Oui Oui

1. Watchtower, le meilleur défaut pour un seul hôte Docker

Watchtower est un conteneur Docker qui regarde vos autres conteneurs Docker. Lorsqu’un nouveau tag d’image est poussé dans le registre, Watchtower le tire, recréé le conteneur avec la même configuration, et nettoie l’ancienne image. Ajoutez un label à un conteneur pour l’activer ou le désactiver.

C’est le starter par défaut pour un hôte Docker domestique car il faut un bloc Docker Compose de deux lignes pour être configuré et fait exactement une chose bien.

Où il court : Watchtower suppose latest ou un tag mutable. Si vous épinglez à 1.2.3, il ne passera pas à 1.2.4 de lui-même. Pas de rollback. Le projet en amont s’est ralenti ; les forks (basés sur WOL, patchés de sécurité) sont courants.

Prix : Gratuit et open source (Apache 2.0).

Plateformes : N’importe quel hôte exécutant Docker (Windows, macOS, Linux, ARM).

Télécharger : containrrr.dev/watchtower · GitHub

Conclusion : Le bon premier choix pour un hôte Docker personnel, avec la mise en garde que vous ne devriez pas le pointer vers des services de production que vous ne pouvez pas vous permettre de casser.

2. Diun, le meilleur choix de notification uniquement

Diun regarde les tags d’image dans votre registre et envoie une notification lorsqu’un nouveau digest est disponible. Il ne tire jamais, ne recrée jamais, ne touche jamais vos conteneurs. Vous recevez un ping Discord ou une notification Gotify, et vous mettez à jour selon vos termes.

La raison de le choisir est le contrôle. L’auto-application de Watchtower se déplace plus vite que ce que la plupart des gens veulent ; Diun garde les humains dans la boucle.

Où il court : Vous devez toujours exécuter docker compose pull && docker compose up -d manuellement.

Prix : Gratuit et open source (MIT).

Plateformes : N’importe quel hôte avec Docker, Podman ou un cluster Kubernetes.

Télécharger : crazymax.dev/diun · GitHub

Conclusion : Le bon choix lorsque vous voulez connaître les mises à jour mais ne pas les appliquer automatiquement.

3. Ouroboros, meilleure alternative ancienne de Watchtower

Ouroboros est une alternative basée sur Python de Watchtower qui précède Watchtower et fait le même travail de base : tirer, recréer, élaguer. Certains opérateurs d’homelab restent sur Ouroboros car sa configuration est plus proche de ce qu’ils ont écrit il y a des années.

Le développement est lent mais stable. Les nouveaux utilisateurs doivent commencer par Watchtower ou Diun.

Où il court : Rythme de sortie plus lent que les alternatives. L’ensemble des fonctionnalités est essentiellement gelé.

Prix : Gratuit et open source (MIT).

Plateformes : N’importe quel hôte exécutant Docker.

Télécharger : GitHub

Conclusion : Bien si vous l’exécutez déjà. Sinon Watchtower ou Diun.

4. Podman auto-update, meilleure option Podman native

Podman est livré avec podman auto-update, une sous-commande qui lit un label sur chaque conteneur et tire des images fraîches sur une minuterie systemd. Pas de conteneur sidecar, pas d’outil tiers. Il s’intègre avec Quadlet (le générateur Podman pour systemd) pour les définitions de service déclaratives.

La raison de le choisir est que si vous exécutez Podman sans root sur RHEL, Fedora ou un Debian moderne, le chemin de mise à jour automatique existe déjà dans le système d’exploitation.

Où il court : Podman uniquement. Pas de notification intégrée.

Prix : Gratuit et open source (Apache 2.0).

Plateformes : Linux (Podman).

Télécharger : Documentation sur docs.podman.io

Conclusion : Le choix natif sur les hôtes Podman. Aucun nouvel outil requis.

5. Shepherd, meilleur pour Docker Swarm

Shepherd regarde les services Docker Swarm (pas les conteneurs autonomes) et roule les services lorsque leur tag d’image a un nouveau digest. Il respecte la stratégie de mise à jour progressive de Swarm, ce qui signifie qu’il fonctionne bien avec les health-checks et le parallélisme des mises à jour.

Très peu de gens exécutent toujours Swarm à grande échelle, mais pour ceux qui le font, Shepherd est le metteur à jour automatique construit pour le modèle de Swarm.

Où il court : Swarm uniquement. Pas d’utilisation en dehors d’un cluster Swarm.

Prix : Gratuit et open source (MIT).

Plateformes : Docker Swarm (hôtes Linux).

Télécharger : GitHub

Conclusion : Le bon choix à l’intérieur d’un Docker Swarm.

6. Renovate, meilleure approche GitOps

Renovate est un bot qui ouvre des pull requests dans votre repo git lorsqu’un tag d’image a une mise à jour. Il fonctionne sur les fichiers Compose, les manifests Kubernetes, les charts Helm, les Dockerfiles, GitHub Actions et des dizaines d’autres cibles. Le PR inclut les notes de version, les liens du changelog et une vérification que le nouveau tag existe réellement.

La raison de le choisir est que les mises à jour deviennent des changements de code. Vous les examinez, les fusionnez et CI applique la mise à jour. Le rollback est un git revert. C’est le modèle dans lequel la plupart des équipes de production se retrouvent.

Où il court : Nécessite un pipeline de déploiement basé sur git. Pas approprié pour un homelab qui n’utilise pas CI.

Prix : Gratuit auto-hébergé (Apache 2.0). Le service gérée (Mend) est aussi gratuit pour l’open source et les petites équipes.

Plateformes : GitHub, GitLab, Bitbucket, git auto-hébergé.

Télécharger : renovatebot.com · GitHub

Conclusion : Le bon choix lorsque votre infrastructure est définie dans git.

7. Portainer, meilleures mises à jour manuelles basées sur GUI

Portainer est un tableau de bord de gestion Docker/Swarm/Kubernetes. Il affiche tous les conteneurs et toutes les images, signale quand une nouvelle image est disponible, et vous permet de recréer le conteneur avec le nouveau pull en deux clics. Community Edition est gratuite ; Business Edition ajoute RBAC, le scan d’images et plus.

La raison de le choisir est que certaines mises à jour sont des décisions ponctuelles que vous voulez prendre dans une UI plutôt qu’un fichier de configuration.

Où il court : Pas entièrement automatisé. Vous êtes le metteur à jour automatique ; Portainer vous donne juste le bouton.

Prix : Community Edition gratuite. Business Edition payante.

Plateformes : Docker, Swarm, Kubernetes (auto-hébergé).

Télécharger : portainer.io · GitHub

Conclusion : Le choix pour les flux de travail de mise à jour par clic et les flottes mixtes.

Comment choisir

FAQ

Est-ce sûr d’exécuter Watchtower contre la production ?
Pas sans une politique de tags minutieuse. Pointez-le sur :latest et il peut casser votre pile sur n’importe quelle erreur en amont. Pointez-le sur des tags épinglés semver et ajoutez un rollback basé sur les health-checks. Mieux : utilisez Renovate pour tout ce que vous ne pouvez pas vous permettre de casser.

Comment puis-je épingler à une vraie version au lieu de latest ?
Remplacez image: nginx par image: nginx:1.27.2 dans votre fichier Compose. Renovate ouvre un PR lorsque 1.27.3 est livré. Watchtower et Diun remarquent tous deux les nouveaux digests même pour les tags épinglés si le tag lui-même est mis à jour en amont.

Ces outils fonctionnent-ils avec les registres privés ?
Oui. Watchtower, Diun et Renovate supportent tous les credentials docker pour les registres privés (ECR, GCR, Harbor, auto-hébergé).

Puis-je annuler une mauvaise mise à jour ?
Watchtower et Ouroboros ne gardent pas la balise d’image précédente ; vous avez besoin de l’ID d’image précédent ou de votre propre schéma d’étiquetage. L’UI de Portainer rend le rollback plus facile. Le rollback de Renovate est git revert.

À quelle fréquence les conteneurs doivent-ils auto-mettre à jour ?
Pour un homelab, une fois par jour à une heure tranquille c’est bien. Pour la production, préférez notification uniquement ou basé sur PR (Renovate) pour que les mises à jour se fassent via la révision et CI, pas un daemon en arrière-plan.