Docker Container automatisch aktualisieren4 min zu lesen

Wenn man Docker Container auf seinem Server betreibt, möchte man natürlich, dass diese auch immer auf dem neusten Stand sind. Das dient auch zur Server- und Datensicherheit bei. Um sicherzugehen, dass man keine Updates verpasst, sollte man alle paar Tage die Container überprüfen. Das kann lästig werden und irgendwann schläft das Thema bei einem ein.

Watchtower hilft und so richtet ihr es ein

Dieses Problem habe ich mit Watchtower erfolgreich gelöst. Nun werden alle 24 Stunden die Container überprüft. Wie ich das gemacht habe? Ich erzähle es Euch.

Und so geht es…

Zuerst sollte man sich mit dem eigenen Server verbinden und zum Root-User bzw. zu dem User unter dem Docker Service läuft wechseln. Einfachhalber hier mit dem Root-User.

Danach begibt man sich auf die Github Seite und liest sich mal die README durch.

Auf dem Server erstellt man in einem eindeutigen Verzeichnis, wo man die Datei auch wieder findet, eine Docker-compose.yml Datei, sofern noch nicht vorhanden und fügt folgendes ein: vi docker.compose.yml

selektive Containerauswahl:

version: '2.2'
services:

  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker/config.json:/config.json
    command: watchtower openvpn-as nextcloud Aria2 collabora onlyoffice openvpn  wordpress_wordpress_1 wordpress_mariadb_1 matomo_application_1 matomo_mariadb_1  bitward_bitwarden_1 --schedule '0 0 0 * * *'  --cleanup --debug 
    environment:
      - TZ='Europe/Berlin'
     #- REPO_USER='githubuser' 
     #- REPO_PASS='password'
   #  - WATCHTOWER_NOTIFICATIONS=email
   #  - WATCHTOWER_NOTIFICATION_EMAIL_FROM=server@Domain.tld
    # - WATCHTOWER_NOTIFICATION_EMAIL_TO=mail@domain.tld
   #  - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.domain.tld
    # - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=mail@domain.tld
     #- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=Secret
    restart: always

selektiv Container aktualisieren

 command: <containerid> <containerid2> --interval 30

Dieser Code sorgt dafür  das die Überprüfung alle 30 Minuten ausgeführt wird. In unserem Beispiel werden die Container mit dem Namen Watchtower, Pihole, Office, Firefox-syncserver und aria2c überprüft und bei Bedarf aktualisiert.
kleine Anmerkung:

watchtower aktualisiert generell alle Container die laufen. Nur wenn man ,wie ich, selektiv aktualisieren möchte, werden die Containernamen eingetragen.

Zeitpunkt zum aktualisieren setzen

Wenn man nicht tagsüber die Container aktualisierten lassen möchte, kann man dies auch auf die gewünschte Zeit verschieben.

--schedule '0 0 0 * * *'  --cleanup --debug 

Mit dieser Anweisung wird das überprüfen und das eventuelle aktualisieren auf die Nacht verschoben und die alten Images anschließend gelöscht. Mit debug erhalte ich eine genauere Logausgabe.

Email-Benachrichtigung

Ganz gut zum debuggen ist das senden einer Email wenn ein Container aktualisiert wurde. Dies geschieht mit folgendem Eintrag. Ich habe aber eine Raute davor gesetzt, da aktuell alles läuft wie gewünscht. So läuft alles stillschweigend nachts ab und werde nicht genervt mit Emails. 😅

 - WATCHTOWER_NOTIFICATIONS=email
   #  - WATCHTOWER_NOTIFICATION_EMAIL_FROM=server@Domain.tld
    # - WATCHTOWER_NOTIFICATION_EMAIL_TO=mail@domain.tld
   #  - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.domain.tld
    # - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=mail@domain.tld
     #- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=Secret

Container starten

Hat man den Block nun für sich angepasst, speichert man die docker-compose.yml Datei ab und führt diese aus.

docker-compose up -d

Der Container sollte nun starten. Sobald die ersten Updates durchgelaufen sind, schaut man in die Log Datei des Watchtower Containers. sudo Docker Logs <watchtowerid> Die Ausgabe sollte ungefähr so aussehen:

[...]
time="2018-09-16T14:57:50Z" level=info msg="Found new crazymax/firefox-syncserver:latest image (sha256:ca246670c21f134a6f3fbb360da0158f0e78a24f07e8aa6ed645f2b2e5465e4c)"
time="2018-09-16T14:57:51Z" level=info msg="Stopping /firefox-syncserver (2e6fd27c9978f16852444e9ece1015c5b5c68ce74e922dea8a9f53760d0cb8b4) with SIGTERM"
time="2018-09-16T14:58:05Z" level=info msg="Creating /firefox-syncserver"
time="2018-09-21T19:42:55Z" level=info msg="Unable to update container /aria2c, err='Error response from daemon: Get https://registry-1.docker.io/v2/abcminiuser/docker-aria2-with-webui/manifests/latest-ng: Get https://auth.docker.io/token?scope=repository%3Aabcminiuser%2Fdocker-aria2-with-webui%3Apull&service=registry.docker.io: net/http: TLS handshake timeout'. Proceeding to next."
time="2018-09-22T18:00:10Z" level=info msg="Waiting for running update to be finished..."
time="2018-09-22T18:07:55Z" level=info msg="First run: 2018-09-22 18:12:55 +0000 UTC"
time="2018-09-27T19:18:00Z" level=info msg="Found new crazymax/firefox-syncserver:latest image (sha256:7ee3b2546928be7c60372923530ce448afba447a7458acea077e6a08d667cf7d)"
time="2018-09-27T19:18:04Z" level=info msg="Stopping /firefox-syncserver (f3893fe0d3ee933d0dd40ebbfc4e201fd19d4f8c80310300770b7e06d02d6869) with SIGTERM"
time="2018-09-27T19:18:18Z" level=info msg="Creating /firefox-syncserver"
[...]

Ich hoffe ihr habt dieses kurze Tutorial verstanden, sollten Fragen auftauchen fragt mich einfach indem ihr einen Kommentar unter diesen Artikel schreibt. Ihr könnt natürlich auch schreiben wenn die Anleitung funkioniert hat. 🙂

Wie hat dir der Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (7 Stimme(n), durchschnittliche Bewertung: 2,57 von 5)
Loading...
Folgt mir

lars

Ich bin Blogger, Technikfan und Fachangestellter für Bäderbetriebe seit 15 Jahren. Ein Leben am Beckenrand 🙂
Folgt mir auf Telegram https://t.me/dasnetzundich
lars
Folgt mir

Letzte Artikel von lars (Alle anzeigen)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere