5
(8)

Docker Container aktualisieren – kinderleicht mit Watchtower

Erstellt / aktualisiert

wichtige Informationen...

Affiliate - Offenlegung

Auf meiner Seite verwende ich sogenannte Affiliate-Links, diese sind mit einem gekennzeichnet, damit du diese auch direkt erkennen kannst.
Sobald du über so einen Link das Produkt kaufen würdest, erhalte ich möglicherweise eine Provision vom jeweiligen Anbieter. Außerdem entstehen für Dich natürlich keine zusätzlichen Kosten!
Mich unterstützt du damit aber enorm und trägst dazu bei, dass es auch in Zukunft weitere Guides und Vorstellungen von mir hier geben wird.

Ich empfehle nur Tools / PlugIns / Anbieter / Produkte, hinter denen ich auch wirklich stehe, bzw. bei denen ich auch einen Mehrwert sehe.

DarkWolfCave.de ist Teilnehmer des Amazon-Partnerprogramms, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.


ACHTUNG! Bitte lesen!

Du benutzt das hier Gezeigte natürlich, wie immer, auf eigenes Risiko!
Ich habe alles selbst durchgeführt und mir mein System nicht zerschossen oder sonst irgendwelche negativen Auffälligkeiten bemerkt.

Aber dennoch… Backups sind immer gut….
Für WordPress-Backups am besten mit UpdraftPlus

Ich übernehme keine Haftung für Schäden jeglicher Art am System, der Hardware oder der Katze…. :-P


DarkWolfCave.de

Raspberry Pi – Docker Container aktualisieren – kinderleicht mit Watchtower

Irgendwann wirst du dir die Frage stellen, wie du deine ganzen Docker Container aktualisieren kannst, ohne ständig selbst dran denken und alles manuell machen zu müssen. Aber auch für dieses Problem gibt es eine einfache und geniale Lösung.
Denn mit Watchtower wird dieser Prozess automatisiert und du kannst dich sogar benachrichtigen lassen, sobald es Updates gibt oder diese durchgeführt wurden.

DarkWolfCave.de

Docker Container aktualisieren und per Discord benachrichtigen – Das Video

Kurzes Video wie du Docker Container aktualisieren und dich per Discord benachrichtigen lassen kannst

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Docker Container aktualisieren mit Watchtower – Was brauchen wir?

Bei mir läuft alles wie immer auf einem meiner Raspberry´s. Aktuell sind diese sogar wieder recht günstig und vorrätig zu beziehen (Stand 01.08.2023).
Weiterhin gehe ich davon aus, dass du bereits Docker installiert hast und dort einige Container vorhanden sind.
Praktisch und äußerst hilfreich wäre auch Portainer. Denn hiermit kannst du alle deine Docker-Container einfach und genial in einer GUI verwalten. Kennst du noch nicht? Dann schaue schnell in meinem Artikel dazu nach.
Was uns jetzt noch fehlt, ist Watchtower, dieses werden wir natürlich auch als einen Container bereitstellen.

Du wirst hier einen groben Überblick finden.
Allerdings biete ich dir auch noch etwas mehr Support an:

  • Du benötigst persönlichen Support
  • Du möchtest von Beginn an Unterstützung bei deinem Projekt
  • Du möchtest ein hier vorgestelltes Plugin durch mich installieren und einrichten lassen
  • Du würdest gerne ein von mir erstelltes Script etwas mehr an deine Bedürfnisse anpassen

Für diese Punkte und noch einiges mehr habe ich einen limitierten
VIP-Patreon Tarif
eingerichtet. Falls er dir dort zurzeit nicht angeboten wird,
kontaktiere mich bitte über Discord und wir finden eine Lösung!

Watchtower – Einfach und genial

Was macht Watchtower eigentlich? Na ganz einfach ausgedrückt: Es prüft, in von dir festgelegten Abständen, ob es für deine Container neue Versionen gibt. Darüber kannst du dich zum Beispiel über E-Mail oder Discord informieren lassen oder auch direkt automatisch die neue Version aufspielen.

So verpasst du nie neue Sicherheitsupdates und bist immer auf dem neuesten Stand.

Watchtower – die Container Installation über Portainer

Wie anfangs bereits erwähnt, nutze ich Portainer, um meine Container zu verwalten. Daher zeige ich dir jetzt anhand dieses Tools, wie du Watchtower hinzufügen und konfigurieren kannst.

Logge dich auf die Portainer-Web-GUI ein: https://IP-Adresse:9443/ und klicke auf “Containers” danach auf “ADD Container

Docker Container aktualisieren - Neuen Container mit Portainer erstellen

Hier kannst du jetzt diverse Einstellungen vornehmen. Da Watchtower sehr simpel ist, benötigen wir nicht wirklich viel und können auch keine Console erreichen. Daher ändern wir dort in diesem Fall nichts weiter. Lediglich bei ENV werden wir ein paar Variablen hinzufügen.

  • Name: Watchtower
  • Image: containrrr/watchtower

Reiter Volumes

Hier verbinden wir den inneren Pfad im Container: /var/run/docker.sock mit unserem Hostsystem /var/run/docker.sock.
Außerdem hätten wir gerne “unsere” Zeitzone innerhalb des Containers. Dies erreichen wir indem /etc/localtime mit /etc/localtime verbunden wird. Hier reicht dann auch Read-only:

Docker Container aktualisieren - Portainer Volumes

Reiter ENV

Hier aktivieren wir den “Advanced Mode

Docker Container aktualisieren - Portainer ENV

In dem nun erscheinenden Textfeld fügen wir einige Parameter / Variablen hinzu:

WATCHTOWER_NOTIFICATIONS_LEVEL=info
WATCHTOWER_MONITOR_ONLY=true
WATCHTOWER_POLL_INTERVAL=86400
WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NO_STARTUP_MESSAGE=true
Docker Container aktualisieren - Parameter für Watchtower

Kurze Erklärung zu den Optionen. Falls du mehr da drüber wissen möchtest, findest du eine sehr gute Dokumentation hier.

  • WATCHTOWER_MONITOR_ONLY – mit true geben wir an, dass wir nur informiert werden möchten sobald es ein Update gibt. Dieses wird aber nicht automatisch ausgeführt.
  • WATCHTOWER_POLL_INTERVAL – Dieser Wert steuert, wie oft Watchtower nach neuen Builds / Updates sucht. Angabe in Sekunden, hier: 86400 Sekunden = 24 Stunden.
  • WATCHTOWER_CLEANUP – mit true werden alte Images nach der Aktualisierung entfernt.
  • WATCHTOWER_INCLUDE_STOPPED – mit true werden auch nur erstellte und angehaltene Container geprüft/aktualisiert
  • WATCHTOWER_NO_STARTUP_MESSAGE – mit true verhindern wir die Benachrichtigung beim Start von Watchtower.

Als letztes setzen wir noch bei Restart policy den Wert auf always. So stellen wir sicher, dass auch nach einem Crash des Hosts Watchtower wieder startet und seine Arbeit aufnimmt.

Final deployen wir unseren Container.
Jetzt sollten wir im Log sehen, dass Watchtower beginnt unsere Container auf Updates zu prüfen.
Mit den oben genannten Einstellungen erfolgt die erste Prüfung nach 24 Stunden und es wird lediglich im Log ausgegeben dass es etwas zum Update gibt.
Eine automatische Aktualisierung erfolgt NICHT.

Docker Container aktualisieren - Logs

Alternative Parameter zum Docker Container aktualisieren

In dem bisherigen Beispiel passiert nicht wirklich viel. Watchtower arbeitet zwar und schreibt auch in den Logs falls es einen neuen Build gibt, allerdings wäre es sehr mühsam jetzt jeden Tag selbst dort nachzusehen.

Wie du Watchtower jetzt dazu bringen kannst deine Docker Container zu aktualisieren, zeige ich dir anhand anderer Konfigurationen, die du dann beim Erstellen deines Watchtower-Containers anpassen musst.

Automatische Docker Container Aktualisierung

Einfach die ENV Variablen über Portainer wie weiter oben beschrieben ändern.
Hiermit wird für alle Container alle 24 Stunden (beginnend ab Start des Containers) geprüft ob es ein neues Build gibt und dieses direkt aktualisiert:

WATCHTOWER_NOTIFICATIONS_LEVEL=info
WATCHTOWER_MONITOR_ONLY=false
WATCHTOWER_POLL_INTERVAL=86400
WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NO_STARTUP_MESSAGE=false
WATCHTOWER_ROLLING_RESTART=true

Docker Container Aktualisierung zur bestimmten Zeit

Möchtest du, dass die Prüfung und die Updates immer zu einer bestimmten Uhrzeit erfolgen soll, tauschen wir einfach den INTERVALL gegen SCHEDULE aus.
Hier können wir nach Crontab-Standard die Zeit genau planen. Allerdings mit einem Unterschied, Crontab nutzt 5 Stellen hier werden 6 benötigt:

SecondsMinutesHoursDay of monthMonthDay of week
SekundenMinutenStundeTag (bezogen auf Monat)MonatTag (bezogen auf Woche)
0-59
* / , –
0-59
* / , –
0-23
* / , –
1-31
* / , – ?
1-12
JAN-DEC
* / , –
0-6
SUN-SAT
* / , – ?

Wenn du mehr über das Format bzw die Parameter erfahren möchtest, empfehle ich dir die Beschreibung auf dieser Seite anzuschauen.

Als Beispiel soll Watchtower jede Nacht um 1 Uhr prüfen und aktualisieren:

WATCHTOWER_NOTIFICATIONS_LEVEL=info
WATCHTOWER_MONITOR_ONLY=false
WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NO_STARTUP_MESSAGE=false
WATCHTOWER_ROLLING_RESTART=true
WATCHTOWER_SCHEDULE=0 0 1 * * *

Docker Container Aktualisierung nur für bestimmte Container

Es gibt immer mal Situationen und Container wo man nicht möchte dass sich diese automatisch aktualisieren. Und auch hier ist Watchtower so genial, dass wir entscheiden können welche automatisiert erneuert werden sollen und welche wir uns lieber manuell anschauen wollen.

Geregelt wird dies über die sogenannten “Flags”.
Über die ENV Variable WATCHTOWER_LABEL_ENABLE schalten wir mit true ein, dass nur noch gelabelte Container aktualisiert werden.

Dazu müssen wir dann natürlich die entsprechenden Container labeln.
Über Portainer geht dies auch recht schnell, öffne deinen Container und wähle Duplicate/Edit aus damit du über den Reiter LABELS einen neuen hinzufügen kannst. Einfach auf ADD LABEL klicken, dann als namen: com.centurylinklabs.watchtower.enable und als value: true eintragen. Deploy und dein Container ist gelabelt.

Docker Container aktualisieren - Portainer Labels

Deinem Watchtower Container musst du dann nur noch WATCHTOWER_LABEL_ENABLE=true hinzufügen und es werden dann nur noch Container mit dem entsprechenden Label erneuert.

WATCHTOWER_LABEL_ENABLE=true
WATCHTOWER_NOTIFICATIONS_LEVEL=info
WATCHTOWER_MONITOR_ONLY=false
WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NO_STARTUP_MESSAGE=false
WATCHTOWER_ROLLING_RESTART=true
WATCHTOWER_SCHEDULE=0 0 1 * * *

Discord Benachrichtigung

Wir können uns auch benachrichtigen lassen sobald es ein neues Build/Update für einen Docker Container gibt. Hier gibt es viele verschiedene Möglichkeiten wie zum Beispiel per E-mail, Slack, Teams, Discord usw.

Ich zeige dir heute wie du solche Benachrichtigungen auf deinem Discord in einem eigenen Bereich erhalten kannst. Somit siehst auch nur du diese Mitteilungen und nicht deine ganze Community.

Vorbereitungen für eine Discord Benachrichtigung

Du benötigst einen neuen, privaten Kanal sowie einen Webhook.
Logge dich also in deinem Discord ein, klicke auf deinen ServerNamen (Dropdown) und wähle Kanal erstellen:

Docker Container aktualisieren - Discord Kanal erstellen

Als nächstes vergibst du einen Namen, wählst Text und stellst um auf Privater Kanal:

Discord Kanal erstellen2

Den Punkt Mitglieder und Rollen hinzufügen kannst du überspringen.
Öffne die Einstellungen (Zahnrad) bei deinem gerade erstellten Kanal und klicke dann auf Integration.
Hier sieht du den Bereich “WebHook” – klicke auf WebHook erstellen:

Discord Kanal erstellen3
Discord webhook 1

Herzlichen Glückwunsch, du hast jetzt deinen eigenen WebHook. Der Name wird zufällig von Discord gewählt, du kannst ihn aber ändern:

Discord webhook2

Betätige nun den Button WebHook-URL kopieren und speichere ihn in einer Textdatei.
Wir benötigen die ID sowie den Token aus der URL.
Nach …/api/webhooks/ kommt deine ID und nach dem nächsten / der Token:

Discord Token

Diese Werte müssen wir jetzt in eine ENV Variable packen.
Nach dem discord:// kommt erst der Token, dann ein @ und danach deine ID.
Da die Nachrichten über shoutrrr (welches mit Watchtower schon mitkommt) gesendet werden, brauchen wir zwei neue Variablen. Ansonsten ist der Rest wie im ersten Beispiel. Es wird nichts aktualisiert, sondern du wirst nur informiert. Und das alle 24 Stunden nach dem Start des Containers. Damit du aber direkt siehst, dass du eine Benachrichtigung in Discord erhältst, ändern wir den Intervall auf 2 Minuten (120) und lassen uns auch die StartupMessage (false) anzeigen
Im Live-Betrieb solltest du dies entsprechend anpassen:

WATCHTOWER_NOTIFICATIONS=shoutrrr
WATCHTOWER_NOTIFICATION_URL=discord://NO-HJ********F82s@376********73
WATCHTOWER_NOTIFICATIONS_LEVEL=info
WATCHTOWER_MONITOR_ONLY=true
WATCHTOWER_POLL_INTERVAL=120
WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NO_STARTUP_MESSAGE=false

Du kannst mit deinem Webhook und den beiden Variablen auch die anderen Beispiele entsprechend ergänzen und somit überall Benachrichtigungen erhalten.

Falls du mehr über Docker wissen möchtest, dann findest du bei mir weitere Berichte, oder durchforste das Internet. Außerdem kann ich folgendes Buch sehr empfehlen:

Docker - Buchempfehlung
Werbung – Buchempfehlung
Avatar-Foto

Ich bin ein 1977 geborener Technik-Nerd. Mein erster Gefährte in der digitalen Welt war ein C64, der den Grundstein für meine Leidenschaft für Technologie legte. So wurde mein Hobby zum Beruf, und ich begann eine Ausbildung zum IT-Systemelektroniker. Selbst in meiner knappen Freizeit widme ich mich weiterhin meiner Leidenschaft fürs Gaming, verschiedene Programmiersprachen und andere IT-bezogene Themen. Ansonsten mag ich Hunde und bin fasziniert von Wölfen!

Gefällt dir der Beitrag?
Hinterlasse gerne ein paar Sterne!

Wie hilfreich war dieser Beitrag für Dich?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 8

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Abonnieren
Benachrichtige mich bei
guest
2 Kommentare
Neueste
Älteste
Inline Feedbacks
Alle Kommentare anzeigen
Inhalt