>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Go

Comment automatiser les mises à jour des conteneurs Docker sans pipelines CI/CD complexes

Si vous utilisez un serveur domestique, un NAS ou quelques projets personnels sur un petit VPS, vous avez probablement déjà géré la routine de mise à jour. Une nouvelle version d'un service sort, et vous rouvrez le terminal. Vous devez puller l'image, arrêter l'ancien conteneur, vous rappeler de tous les mappages de ports, les montages de volumes et les variables d'environnement, puis tout redémarrer.

Quand vous avez une douzaine de conteneurs, les mises à jour manuelles consomment beaucoup de temps. Le projet Watchtower propose de résoudre ce problème une bonne fois pour toutes.

Ce que fait Watchtower

Watchtower est un petit conteneur qui surveille les autres services en cours d'exécution sur votre hôte. Il vérifie périodiquement Docker Hub ou votre registre privé pour détecter de nouveaux tags et met à jour l'application automatiquement.

Le principe de fonctionnement est extrêmement simple :

  1. Watchtower détecte qu'une image mise à jour a été publiée sur le registre.
  2. Il télécharge la nouvelle image sur le serveur.
  3. Il arrête proprement le conteneur actuel.
  4. Il lance un nouveau conteneur avec exactement les mêmes arguments et la même configuration que l'ancien.

Tous les paramètres, y compris les répertoires montés, les réseaux et les variables d'environnement, sont automatiquement transférés à la nouvelle instance.

Démarrage rapide

Démarrer l'utilitaire ne nécessite qu'une seule commande terminal :

$ docker run --detach \
    --name watchtower \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    nickfedor/watchtower

La clé ici est de passer le socket Docker /var/run/docker.sock. C'est ainsi que l'utilitaire communique avec le démon Docker sur votre machine et gère les autres conteneurs.

Où l'utiliser et où l'éviter

Les développeurs du projet le précisent honnêtement dans la documentation : Watchtower n'est pas destiné à une utilisation en production dans les entreprises commerciales.

Redémarrer automatiquement un conteneur directement depuis le registre sur un serveur de production peut être risqué. En environnement de production, il vaut mieux configurer un pipeline CI/CD complet avec des tests et des versions canary, ou utiliser Kubernetes avec des outils GitOps comme FluxCD.

Cependant, Watchtower est idéal pour les scénarios suivants :

  • Laboratoires personnels et serveurs multimédias.
  • Environnements de développement locaux.
  • Environnements de staging ou de test pour les petits projets.

Détails techniques et architecture

Le projet est écrit en Go. L'utilitaire prend en charge la plupart des architectures CPU populaires : amd64, i386, armhf, arm64v8 et même riscv64. Cela signifie que vous pouvez l'exécuter aussi bien sur un serveur classique que sur un Raspberry Pi.

Pour interagir avec l'hôte, Watchtower utilise l'API Docker version 1.43 et supérieure. Par défaut, l'utilitaire négocie automatiquement la version de l'API requise avec le démon, mais si nécessaire, vous pouvez définir la version manuellement via la variable d'environnement DOCKER_API_VERSION.

Watchtower élimine le besoin de collecter des commandes manuelles dans des notes et des scripts. Si vous êtes fatigué de mettre à jour manuellement vos services personnels ou vos conteneurs de développement local, déployer l'utilitaire prend moins d'une minute et vous fait gagner du temps à chaque nouvelle version.

Projets similaires