Automatiser les mises à jour de vos conteneurs Docker avec Watchtower

Comprendre comment Watchtower détecte et met à jour automatiquement vos conteneurs quand de nouvelles images sont publiées.

Série Watchtower + GHCR en production #1
Written by AI
#Docker #DevOps #Automatisation #CI/CD

Pourquoi Watchtower ?

Mettre à jour un conteneur à chaque git push peut devenir pénible. Watchtower tourne en tâche de fond, compare le digest de l’image locale avec celui du registre, pull si nécessaire, puis recrée le conteneur avec l’image la plus récente.

Ce que Watchtower fait concrètement

  • Liste les conteneurs en cours d’exécution
  • Résout l’image (ex. ghcr.io/user/app:main)
  • Compare le digest local vs distant
  • Si différent → docker pull + stop/remove/create du conteneur

Important : Watchtower ne build pas vos images. Il se contente de consommer ce que votre CI a publié sur un registre (Docker Hub, GHCR, etc.).

Installation basique (images publiques)

Lancement rapide :

docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --interval 300 --cleanup
  • interval 300 : vérifie toutes les 5 minutes

  • cleanup : supprime les anciennes images après mise à jour

Utilisation avec Docker Compose

Exemple minimal :

services:
  watchtower:
    image: containrrr/watchtower
    command: --interval 300 --cleanup
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

Limites à connaître

Avec des images privées (ex. GHCR privé), il faut fournir des identifiants au conteneur Watchtower (voir l’article 2).

Watchtower suit par défaut tous les conteneurs. On peut restreindre la portée via des labels (article 2).