Automatisierte Docker-Updates mit Watchtower – Set & Forget!

Automatisierte Docker-Updates mit Watchtower – Set & Forget!
Photo by Jim Josef / Unsplash

Docker-Container sind ideal, um Services sauber und isoliert zu betreiben. Aber wie hält man sie aktuell? Die manuelle Aktualisierung jedes einzelnen Containers ist auf Dauer mühsam – genau hier kommt Watchtower ins Spiel.

Mit diesem kleinen Helfer kann man Container vollautomatisch aktualisieren lassen, inklusive Benachrichtigung per E-Mail – und das mit nur wenigen Zeilen in einer docker-compose.yml.

version: '3'

services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/timezone:/etc/timezone:ro
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_INCLUDE_RESTARTING=true
      # - WATCHTOWER_POLL_INTERVAL=60
      - WATCHTOWER_NOTIFICATIONS=email
      - WATCHTOWER_NOTIFICATION_EMAIL_FROM=noreply@domain.tld
      - WATCHTOWER_NOTIFICATION_EMAIL_TO=user@domain.tld
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.domain.tld
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=noreply@domain.tld
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=abc123
      - WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
    labels:
      - com.centurylinklabs.watchtower.enable=true

Was macht Watchtower genau?

Watchtower überwacht laufende Container und prüft regelmäßig, ob es für das jeweilige Image eine neue Version gibt. Falls ja, wird:

  1. Das neue Image heruntergeladen
  2. Der Container gestoppt
  3. Der Container mit dem neuen Image neu gestartet
  4. Optional: eine Benachrichtigung versendet

Erklärung der wichtigsten Einstellungen

Variable Bedeutung
WATCHTOWER_CLEANUP=true Alte Images werden automatisch gelöscht
WATCHTOWER_LABEL_ENABLE=true Nur Container mit Label watchtower.enable=true werden überwacht
WATCHTOWER_INCLUDE_RESTARTING=true Auch Container im "restarting"-Zustand werden berücksichtigt
WATCHTOWER_POLL_INTERVAL=60 (optional) Intervall in Sekunden – wie oft auf Updates geprüft wird
WATCHTOWER_NOTIFICATIONS=email E-Mail-Benachrichtigung bei Updates aktivieren
WATCHTOWER_NOTIFICATION_EMAIL_* SMTP-Parameter für den Mail-Versand

E-Mail-Benachrichtigungen

Dank SMTP-Konfiguration informiert Watchtower bei jedem Update automatisch – z. B.:

Watchtower updates on 437912393bec

Found new ghcr.io/linuxserver/heimdall:latest image (049761456a9e)
Stopping /heimdall (365ed1ba8edf) with SIGTERM
Creating /heimdall
Removing image d706b5847a51

Das gibt volle Transparenz über alle Veränderungen am System.

Tipp: Verwende ein separates Mailkonto für den Versand (z. B. noreply@domain.tld) und setze ein starkes Passwort.

Updates gezielt steuern per Label

Nur Container mit folgendem Label werden berücksichtigt:

labels:
  - com.centurylinklabs.watchtower.enable=true

So behältt man die volle Kontrolle und vermeidest ungewollte Updates bei produktiven Diensten.

Sicherheit & Best Practices

  • Verwende keine latest-Tags: Nutze immer feste Versionsnummern für deine Container-Images, z. B. ghcr.io/wg-easy/wg-easy:v11.
    Der latest-Tag kann sich jederzeit ändern – ein automatisches Update könnte dann ein inkompatibles oder fehlerhaftes Image einspielen, was im schlimmsten Fall dazu führt, dass der Container nicht mehr startet oder Daten verloren gehen.
  • Gib Watchtower nur so viele Rechte wie nötig (kein Zugriff auf sensible Volumes!).
  • Nutze Watchtower idealerweise nur für nicht-kritische Container oder in Testumgebungen.
  • Kombiniere Watchtower mit einem Monitoring (z. B. Uptime Kuma), um fehlerhafte Updates schnell zu erkennen.

Fazit

Mit Watchtower steht ein smartes Tool zur Verfügung, um Docker-Container automatisch aktuell zu halten – zuverlässig und mit minimalem Aufwand. Besonders effizient wird der Einsatz in Kombination mit einer eigenen Container-Registry, da öffentliche Registries wie Docker Hub häufig Rate-Limits haben, die automatische Updates einschränken können.

Durch den gezielten Einsatz von Labels und Benachrichtigungen entsteht ein transparenter und wartungsarmer Update-Workflow – ideal für homelabs, Entwicklungsumgebungen oder selektiv auch für produktive Container mit klarer Versionsstrategie.