Was ist Watchtower?
Watchtower ist ein Docker-Container der alle anderen laufenden Container überwacht und sie automatisch auf die neueste Version des konfigurierten Images aktualisiert – ohne manuelles Eingreifen.
Wann sinnvoll: Homelab, nicht-kritische Dienste, Staging-Umgebungen.
Wann nicht: Produktionssysteme mit strenger Change-Management-Policy.
Schnellstart
docker run -d \
--name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
Watchtower prüft nun alle 24 Stunden auf neue Images und updated Container automatisch.
Docker Compose mit Konfiguration
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
# Jede Nacht um 4:00 Uhr (Cron-Syntax)
WATCHTOWER_SCHEDULE: "0 0 4 * * *"
# Alte Images automatisch entfernen
WATCHTOWER_CLEANUP: "true"
# Benachrichtigung per E-Mail
WATCHTOWER_NOTIFICATIONS: email
WATCHTOWER_NOTIFICATION_EMAIL_FROM: [email protected]
WATCHTOWER_NOTIFICATION_EMAIL_TO: [email protected]
WATCHTOWER_NOTIFICATION_EMAIL_SERVER: mail.firma.de
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: "587"
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: [email protected]
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: passwort
# Rollendes Restart (nicht alle gleichzeitig)
WATCHTOWER_ROLLING_RESTART: "true"
Bestimmte Container ausschließen
services:
kritische-app:
image: myapp:1.5.0
labels:
- "com.centurylinklabs.watchtower.enable=false" # Nicht updaten!
unkritische-app:
image: nginx:latest
# Kein Label = Watchtower updated sie
Nur bestimmte Container updaten
# Watchtower nur für Container mit Label starten
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--label-enable
# Nur diese Container werden überwacht:
docker run -d --label "com.centurylinklabs.watchtower.enable=true" nginx
Benachrichtigungen per Slack/Teams
environment:
WATCHTOWER_NOTIFICATIONS: slack
WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: "https://hooks.slack.com/services/xxx"
WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER: "Watchtower Server1"
Einmaliger Run (kein Daemon)
# Alle Container jetzt updaten und Watchtower beenden
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --run-once
Zeitplan (Cron-Syntax)
WATCHTOWER_SCHEDULE="0 0 4 * * *"
# Sekunde Minute Stunde Tag Monat Wochentag
# → Täglich um 04:00
FAQ
Ist Watchtower für Produktionssysteme geeignet?
Mit Vorsicht. Automatische Updates können Breaking Changes einführen. Empfehlung: Watchtower in Produktion mit --label-enable und explizit markierten Containern nutzen.
Was passiert wenn kein neues Image vorhanden ist?
Nichts. Watchtower prüft nur und startet Container neu wenn ein neues Image gepullt wurde.
Fazit
Watchtower spart viel manuelle Arbeit für Homelab- und Staging-Umgebungen. Mit sinnvollen Ausschlüssen und Benachrichtigungen ist es auch für KMU-Umgebungen geeignet.
Container-Management für KMU in Heidelberg, Mannheim und Rhein-Neckar. Anfragen.