Wer kennt es nicht, je mehr updates man händisch machen muss, desto eher empfindet man sie als nervend und macht sie deshalb nicht. Ein Grund mehr das 0 8 15 Containerupdate im Hintergrund laufen zu lassen.
Wollte man ein Docker Container aktualisieren bedeutet dies: Container duplizieren, alten entfernen, ggfs Ports wieder auf den richtigen Stand bringen da ja keine 2 Container die selben Ports haben dürfen. Starten nicht vergessen.
Das kann man sporadisch mit 1-2 Containern machen aber auch da nervt das schnell.
Es geht besser:
- Vollautomatisch:
docker run -d --restart unless-stopped --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --include-stopped --schedule "0 0 3 ? * SUN"
- hier wird jeden Sonntag um 3 Uhr alle Docker Container aktualisiert. Fühlt euch frei die Zeiten nach bedarf zu ändern.
Definitiv die von Rudi hier empfohlene Variante - Semi Automatisch
Für alle Container:
docker run -d –name watchtowerjob -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:latest –cleanup –include-stopped –run-once
Für ausgewählte Container (in diesen Fall „wusel“ und „dusel“
docker run -d –name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:latest –cleanup –include-stopped wusel dusel
Kleine Anmerkung: Der erste Start dauert ein Moment. Der Container beendet sich wenn er fertig ist. - Wir rufen periodisch den Container wie folgt auf:
docker start watchtowerjob -a
Das könnte man z.b. als Cronjob jede Woche laufen lassen.
Hier noch ein paar erläuterungen was der Befehl oben so macht:
Parameter | Bedeutung |
docker run | Docker-Run-Command zum Starten eines Docker-Containers |
-d | Der Container soll detached (also im Hintergrund) laufen |
–name watchtowerjob | Der Name des Watchtowercontainers (beliebig) |
-v /var/run/docker.sock:/var/run/docker.sock | Da docker Container eigentlich abgeschottet sind, müssen wir den docker-socket in den watchtower-container mounten. Sonst hat der Watchtower-Container keinen Zugriff auf die zu überwachenden Cnotainer. |
containrrr/watchtower:latest | Das image (mit dem latest-Tag) aus dem der Watchtower-Container gebaut wird |
–cleanup | Alte Images werden gelöscht, nachdem der Container geupdatet worden ist. Ist dieser Parameter nicht gesetzt, bleiben alte Images erhalten und “müllen” so nach und nach das System zu. |
–include-stopped | Auch aktuell gestoppte Container sollen in das Update einbezogen werden. |
–run-once | Sorgt dafür, dass der Container nur einmal ausgeführt wird. |
Getestet mit DSM 7 (Linux DiskStation 3.10.108 #41890 SMP Fri Jun 25 02:40:49 CST 2021 x86_64 GNU/Linux synology_avoton_1517+)