Mit Watchtower können wir unsere Container Landschaft dauerhaft aktuell halten. Watchertower ist selber ein Container, überwacht allerdings seine Container Nachbarn auf verfügbare Updates. Ist ein Update verfügbar wird im normalen Modus der Container aktualisiert und ebenfalls Neugestartet. So ist wirklich jeder Container in der Umgebung stets auf dem neusten Stand der Dinge.
Aber natürlich gibt es auch Optionen, Einschränkungen und zeitliche Intervalle die beim Update helfen können. Kurzes Beispiel hierfür wäre, nur bestimmte Container darf Watchtower aktualisieren und das dann auch noch zu einer bestimmten Uhrzeit. Also ein interner Scheduler steuert nach belieben die Häufigkeit der Überprüfung.
Aber wie immer, keine lange Reden schwingen, schaut lieber ins Video, da sehen wir die Applikation in voller Aktion. Meine Beispielkonfiguration findet Ihr weiter unten im Beitrag.
Nur Überwachung Skript
Wie bereits oben erwähnt, ist ein automatisches Update zwar super schön, aber eben auch gefährlich. Deswegen zeige ich euch als erstes das Docker Watchtower nur zum Überwachen und eine Meldung absetzen. Das Label-Enable sagt das nur Container mit dem Label Enable Updated werden. Wenn kein Container das Label Enable hat, kann auch nix Updated werden, wird aber in den Logs vermeldet.
#Regelmäßig alle 6 Stunden und nur mit Label Enable! docker run -it -d \ --name WatchTower \ -v /var/run/docker.sock:/var/run/docker.sock \ -e WATCHTOWER_NOTIFICATIONS=gotify \ -e WATCHTOWER_NOTIFICATION_GOTIFY_URL="http://192.168.10.7:5001" \ -e WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN="ASlcSC1ofE.dmaG" \ containrrr/watchtower \ --label-enable \ --interval 21600
Watchtower vorbereitete Skripte
#Zum einmal ausführen docker run --rm \ --name WatchTower \ -v /var/run/docker.sock:/var/run/docker.sock \ -e WATCHTOWER_NOTIFICATIONS=gotify \ -e WATCHTOWER_NOTIFICATION_GOTIFY_URL="http://192.168.10.7:5001" \ -e WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN="ASlcSC1ofE.dmaG" \ containrrr/watchtower \ --run-once \ --cleanup \ --include-restarting \ --rolling-restart \ --include-stopped #Regelmäßig alle 6 Stunden docker run -it -d \ --name WatchTower \ -v /var/run/docker.sock:/var/run/docker.sock \ -e WATCHTOWER_NOTIFICATIONS=gotify \ -e WATCHTOWER_NOTIFICATION_GOTIFY_URL="http://192.168.10.7:5001" \ -e WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN="ASlcSC1ofE.dmaG" \ containrrr/watchtower \ --cleanup \ --include-restarting \ --rolling-restart \ --include-stopped \ --interval 21600
3. Januar 2022 um 13:51 Uhr
Nice2Know:
wenn man die Container via Stack oder Docker-Compose erstellt, haben die Container im Docker einen SHA256 Eintrag als Namen, welches das eindeutige Image identifiziert. Watchtower kann diese nicht aktualisieren, nur wenn die Container im Klarnamen dort stehen. Im untenstehenden Beispiel wurden die ersten drei container via Stack/Docker-compose erstellt und können nicht via Watchtower geuptdatet werden! Nur der letzte wird via Watchtower überwacht 😉
CONTAINER ID IMAGE NAME
b0c960921f01 9167b324e914 watchtower
4f4ac29df6ec 26f81c780271 maria-db
befa1ff31e0b bfd981a1e7b6 youtube-dl
6e51abe392fc vaultwarden/server:latest valtwarden
GitHub Issue: Containers created with docker compose cannot be updated #1019 (googlet einfach danach .. ^)
ich hab mich tod gesucht bis ich herraus gefunden hatte, dass der fehler nicht bei mir liegt ^^
9. September 2022 um 00:06 Uhr
der Fehler liegt bei Dir, denn Du kannst auch via docker-compose/ stacks erzeugte Container mit einem Namen versehen, container_name. Dann hast Du unter „docker container ls“ die benötigten Container Namen und ein Update via watchtower klappt.
9. Januar 2022 um 19:54 Uhr
Moin Dennis, erst mal vielen Dank für die ganzen Tutorial zu den verschiedenen Themen rund um Docker. Ich bin komplett neu im Thema und arbeite mich derzeit über das berühmte YouTube-Studium ein 😉
Über WatchTower möchte ich mit der Schedule-Option jetzt eigentlich nur monitoren, ob Updates gefunden wurden und mir das per Gotify und Mail weiterleiten. Es sollen also keine automatisierten Updates durchgeführt werden.
Jetzt zu meiner Frage:
Kommen diese Update-Meldungen nur, wenn wirklich Updates zu den Containern gefunden werden oder wird auch informiert, wenn der Cronjob ohne neue Updates läuft?
21. April 2023 um 14:47 Uhr
Nur bei Updates.
6. September 2022 um 20:57 Uhr
moin Dennis,
Danke für deine ganzen tut´s du hast mir mehrmals echt geholfen.
Ich habe quasi grad erst angefangen das Heimnetzwerk aufzubauen mit Proxmox ect. jetzt hab ich auch Portainer am laufen ich habe die version 2.9.3 die neuste aktuell ist 2.15.0
(updatet Watchtower auch Portainer ? es wird ja auch als Container angezeigt?)
und ich bin zu Blöd das update manuell durchzuführen wenn ich es mit:
https://docs.portainer.io/start/upgrade/docker
mache startet die Bude nicht mehr hab zum ein Proxmox Backup gemacht.
kannst du bitte nochmal dein geballtes wissen rausschleudern.
Danke
9. September 2022 um 12:36 Uhr
eine Anleitung für crowdsec oder fail2ban wäre ein träumchen
21. April 2023 um 14:53 Uhr
1. Ja, Watchtower updated Portainer.
2. Bitte beschreibe dein Problem genau. Was du hier machst hilft uns nicht weiter.
21. April 2023 um 14:55 Uhr
(siehe unten)
24. November 2022 um 11:41 Uhr
Wo kann ich diese Paramenter eintragen wenn ich PORTAINER verwende
-e WATCHTOWER_NOTIFICATIONS=gotify \
-e WATCHTOWER_NOTIFICATION_GOTIFY_URL=“http://192.168.10.7:5001″ \
-e WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=“ASlcSC1ofE.dmaG“ \
und
–cleanup \
–include-restarting \
–rolling-restart \
–include-stopped \
–interval 21600
21. April 2023 um 14:51 Uhr
Die ersten drei findet man bei Portainer unten unter „Env“. Dort klickt man dann auf „Add an environment variable“.
Für die anderen setzt man „Command“ bei „Command & logging“ auf „Override“ und schreibt sie in Anführungszeichen daneben.
4. Mai 2024 um 13:23 Uhr
Hallo,
bei dem oben gezeigten Script kommt bei mir immer der Fehler
„unknown flag: –run-once“
gleiches bei
„unknown flag: –cleanup“
Habe schon Stunden gesucht aber leider keinen Hinweis gefunden. Docker Version 26.1.1
Hat jemand ähnliches erlebt bzw. hat jemand eine Idee?
Danke
7. Juni 2024 um 12:27 Uhr
@Michael
Bei mir das selbe, übergib statt den beiden Parametern einfach die Environment Variables:
-e WATCHTOWER_RUN_ONCE=true
-e WATCHTOWER_CLEANUP=true
Das funktioniert bei mir problemlos.