🤔 Was ist Watchtower?
Watchtower ist ein Docker Container, der deine anderen Container automatisch überwacht und aktualisiert. Es prüft regelmäßig, ob neue Versionen deiner Images verfügbar sind und führt bei Bedarf automatische Updates durch.
Warum Watchtower verwenden?
- ✅ Zeitersparnis: Keine manuellen Updates mehr
- ✅ Sicherheit: Immer die neuesten Security-Patches
- ✅ Konsistenz: Einheitliche Update-Prozesse
- ✅ Überwachung: Automatische Benachrichtigungen
So funktioniert Watchtower
- Watchtower läuft als Docker Container
- Es überwacht andere Container über die Docker API
- Regelmäßige Prüfung auf neue Image-Versionen
- Automatischer Pull und Restart bei Updates
- Optionale Benachrichtigungen über Slack, E-Mail etc.
🚀 Watchtower installieren
Schnellstart mit Docker Run
docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower
Docker Compose Setup (Empfohlen)
Für Production-Umgebungen empfehle ich Docker Compose. Erstelle eine docker-compose.yml:
version: '3.8'
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=3600
- WATCHTOWER_INCLUDE_RESTARTING=true
restart: unless-stopped# Watchtower starten docker-compose up -d # Status prüfen docker-compose logs watchtower
⚙️ Grundkonfiguration
Wichtige Umgebungsvariablen
WATCHTOWER_CLEANUP
true - Entfernt alte Images nach dem Update automatisch
WATCHTOWER_POLL_INTERVAL
3600 - Prüfintervall in Sekunden (3600 = 1 Stunde)
WATCHTOWER_INCLUDE_RESTARTING
true - Überwacht auch Container die gerade neu starten
Container-spezifische Labels
Du kannst einzelne Container von Updates ausschließen oder spezielle Regeln festlegen:
services:
myapp:
image: myapp:latest
labels:
# Container von Updates ausschließen
- "com.centurylinklabs.watchtower.enable=false"
database:
image: postgres:14
labels:
# Nur bestimmte Tags überwachen
- "com.centurylinklabs.watchtower.enable=true"
# Benachrichtigungen aktivieren
- "com.centurylinklabs.watchtower.notify=true"🔧 Erweiterte Optionen
Zeitplan-basierte Updates
Updates nur zu bestimmten Zeiten ausführen (z.B. nachts):
environment: - WATCHTOWER_SCHEDULE=0 0 4 * * * # Täglich um 4:00 Uhr - WATCHTOWER_TIMEZONE=Europe/Berlin
Slack-Benachrichtigungen
environment: - WATCHTOWER_NOTIFICATIONS=slack - WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://hooks.slack.com/... - WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=watchtower-server - WATCHTOWER_NOTIFICATION_SLACK_CHANNEL=#updates
💡 Best Practices
1. Staging-Umgebung zuerst
Teste Updates immer zuerst in einer Staging-Umgebung, bevor sie in Production ausgerollt werden.
2. Backup vor Updates
Erstelle automatische Backups deiner Daten vor jedem Update. Kombiniere Watchtower mit Backup-Lösungen.
3. Monitoring einrichten
Überwache die Gesundheit deiner Container nach Updates. Nutze Health Checks und Monitoring-Tools.
🔍 Troubleshooting
Problem: Container werden nicht aktualisiert
Lösung 1: Prüfe die Logs: docker logs watchtower
Lösung 2: Stelle sicher, dass der Docker Socket gemountet ist
Lösung 3: Prüfe Labels und Konfiguration der Container
Problem: Watchtower verbraucht zu viele Ressourcen
Lösung: Erhöhe das Poll-Intervall oder nutze Cron-basierte Updates
WATCHTOWER_POLL_INTERVAL=7200 # 2 Stunden🚀 Deine Container sind jetzt zukunftssicher!
Mit Watchtower hast du ein robustes System für automatische Updates. Deine Docker-Container bleiben immer aktuell, ohne dass du dich darum kümmern musst. Perfekt für Home Server, Development-Umgebungen und Production-Systeme.