Docker Container automatisch updaten mit Watchtower

  • Hi!

    Da das Updaten von laufenden Docker Containern immer wieder für Unmut sorgt, wenn man nicht gerade unRAID nutzt, möchte ich meine neueste Entdeckung, die zur Lösung dieses Problems führt, mit Euch teilen.

    Im OMV Docker Pugin folgendes Image pullen v2tec/watchtower

    Das ist ein ca. 8 MB großes Docker Image, welches Ihr einfach nur starten müsst.

    In der Zeile ganz unten bei Extra Arguments bitte noch folgendes eintragen

    Code
    -v /var/run/docker.sock:/var/run/docker.sock

    Von nun an überprüft dieser Container alle 5 Minuten, ob im Docker Hub Änderungen an den Images, die Ihr auf Eurem System habt, vorgenommen wurden. Sollte also eine neue Version im HUB sein, stoppt der Watchtower Euren Containern, aktualisiert das Image, erstellt einen neuen Container mit den alten Einstellungen und startet diesen wieder.

    Wie man hier im GiT sehen kann, können beim Start des Containers auch noch per Variablen gewisse Werte wie die Schedule Zeit usw. gesondert definiert werden. Man kann auch festlegen, dass nur bestimmte Container überprüft werden, aber den Meisten sollte es wohl reichen, wenn alle Container regelmässig aktualisiert werden.

    Ich hatte zwar zu Anfang meine Bedenken wegen der Überprüfung alle 5 Minuten, war aber unbegründet, da dieser Prozess das System in keinster Weise belastet. ;)

    b0mb

    95% aller Computerfehler sitzen vor dem Bildschirm!

    3 Mal editiert, zuletzt von b0mb (15. Juni 2017 um 09:28)

  • Einfach die nicht mehr benutzten Container ohne Name davor anklicken und auf Löschen drücken.


    --------------------------


    Sollte mal ein Container nicht richtig geupdated werden weil er im Bootloop ist folgende Vorgehensweise nutzen:

    1. per SSH verbinden
    2. docker container ls - Container ID aufschreiben
    3. docker update --restart=no [ContainerID]
    4. Im OMV Menü den entsprechenden Container markieren und auf Modify drücken und Restart wieder auf Allways ändern und speichern.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Musst du nicht, wenn der Service läuft, dann läuft er.
    Kann natürlich sein das dein Docker container mal abstürzt.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Es geht übrigens noch schöner....und zwar einfach folgendes über die Kommandozeile einfügen


    Code
    sudo docker run -d -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped --name watchtower v2tec/watchtower --cleanup --schedule "0 0 4 * * *"


    Dann wird automatisch der Watchtower Container gestartet und führt Morgens um 4 Uhr die Updates durch. Die alten Images werden dabei gelöscht. ;)

    Sieht dann im Logfile so aus ....


    Code
    time="2018-02-07T19:53:26Z" level=info msg="First run: 2018-02-08 04:00:00 +0000 UTC"
    time="2018-02-08T04:00:10Z" level=info msg="Found new linuxserver/nextcloud:latest image (sha256:55ca67ea251e12e6f4b748e8e578f9c4b40b3608a514dbd0900ca8e6b724cc9c)"
    time="2018-02-08T04:00:17Z" level=info msg="Stopping /nextcloud (da9a21666502f701cdd4df4b2709b36e33104d84f1d9e44498084ba19b9321d6) with SIGTERM"
    time="2018-02-08T04:00:22Z" level=info msg="Creating /nextcloud"
    time="2018-02-08T04:00:22Z" level=info msg="Removing image sha256:0997cf7d1b062697e231be6002b215f9cc2164ace98912de404641182ebc50d8"

    95% aller Computerfehler sitzen vor dem Bildschirm!

  • Ich habe das jetzt nochmal mit den Parametern für E-Mail Nachrichten vorbereitet. Dann bekommt Ihr eine E-Mail mit Infos darüber, welche Container aktualisiert wurden. ;)

    Code
    sudo docker run -d -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped --name watchtower v2tec/watchtower --notifications email --notification-email-from xxx@gmail.com --notification-email-to xxx@gmail.com --notification-email-server smtp.gmail.com --notification-email-server-port 25 --notification-email-server-user xxx@gmail.com --notification-email-server-password xxx --cleanup --schedule "0 0 4 * * *"

    95% aller Computerfehler sitzen vor dem Bildschirm!

  • Ich bekomme seit gestern folgende Meldung im Watchtower


    Zitat

    time="2018-03-08T18:45:16+01:00" level=info msg="First run: 2018-03-08 18:50:16 +0100 CET"
    time="2018-03-08T19:30:26+01:00" level=info msg="Unable to update container /Watchtower, err='Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.1.1:53: read udp 192.168.1.105:44542->192.168.1.1:53: i/o timeout'. Proceeding to next."
    time="2018-03-08T19:30:38+01:00" level=info msg="Unable to update container /Emby, err='Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout'. Proceeding to next."
    time="2018-03-08T19:30:51+01:00" level=info msg="Unable to update container /CloudCommander, err='Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout'. Proceeding to next."

  • Hi,
    ich wollte die Variante mit der E-Mail einrichten. Ich habe die Parameter entsprechend angepasst, und sie eingetragen. Bekomme eine Fehlermeldung direkt von Docker. Dann habe ich die Parameter mal so gelassen, und bekomme praktisch den gleichen Fehler:
    [errorbox]Fehler #0:OMV\ExecException: Failed to execute command 'export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export LANG=C; docker run -d -v /etc/localtime:/etc/localtime:ro --net=bridge -e PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --label omv_docker_extra_args="sudo docker run -d -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped --name watchtower v2tec/watchtower --notifications email --notification-email-from xxx@gmail.com --notification-email-to xxx@gmail.com --notification-email-server smtp.gmail.com --notification-email-server-port 25 --notification-email-server-user xxx@gmail.com --notification-email-server-password xxx --cleanup --schedule "0 0 4 * * *"" sudo docker run -d -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped --name watchtower v2tec/watchtower --notifications email --notification-email-from xxx@gmail.com --notification-email-to xxx@gmail.com --notification-email-server smtp.gmail.com --notification-email-server-port 25 --notification-email-server-user xxx@gmail.com --notification-email-server-password xxx --cleanup --schedule "0 0 4 * * *" "v2tec/watchtower:latest" 2>&1' with exit code '125': Unable to find image '0:latest' locallydocker: Error response from daemon: pull access denied for 0, repository does not exist or may require 'docker login'.See 'docker run --help'. in /usr/share/php/openmediavault/system/process.inc:175Stack trace:#0 /usr/share/openmediavault/engined/rpc/docker.inc(587): OMV\System\Process->execute()#1 [internal function]: OMVRpcServiceDocker->runContainer(Array, Array)#2 /usr/share/php/openmediavault/rpc/serviceabstract.inc(123): call_user_func_array(Array, Array)#3 /usr/share/php/openmediavault/rpc/rpc.inc(86): OMV\Rpc\ServiceAbstract->callMethod('runContainer', Array, Array)#4 /usr/sbin/omv-engined(536): OMV\Rpc\Rpc::call('Docker', 'runContainer', Array, Array, 1)#5 {main}[/errorbox]

    Mit dem im ersten Beitrag genannten Parametern funktioniert es (gerade mit dem Emby-Update getestet).

    Zitat von root2

    Merke: Das "S" in "IoT" steht für Sicherheit!

  • Habe gerade mal meinen Watchtower-Docker angepasst.

    Vorher hab ich ihn einfach normal, ohne Extras, laufen lassen. Da mir nun aber im laufenden Betrieb aufgefallen ist, dass es unschön ist, wenn ein Docker (TVHeadend) ein Update bekommt während man LiveTV schaut, musste ich es anpassen.

    Nun kann man ja einzelne Docker vom Update ausnehmen, das wollte ich aber net. Also habe ich folgendes gewählt:

    • Update als crontab um 4:30 Uhr
    • Zusätzlich noch

      • Automatisches Bereinigen von alten Images
      • erweiterte [definition=12,4][definition='1','3']Debug[/definition][/definition] Informationen ins Log schreiben
      • Benachrichtigung per E-Mail

    und so sieht dies zum Starten dann bei mir aus:

    NAS: Gehäuse: Jonsbo G3, Mainboard: MSI B460M PRO, CPU: Intel Pentium G6400, OS: OMV 6

    Client: NVIDIA Shield Pro 2019

    Einmal editiert, zuletzt von SkyBird1980 (14. Juli 2018 um 21:35)

  • ..............................danke^^

    man sollte net so blöd sein und einfach Copy&Paste betreiben^^

    Werde mal den Key löschen und nen neuen erstellen xD

    NAS: Gehäuse: Jonsbo G3, Mainboard: MSI B460M PRO, CPU: Intel Pentium G6400, OS: OMV 6

    Client: NVIDIA Shield Pro 2019

  • Ich wollte das grade so übernehmen, copy+paste funktioniert so aber nicht, muss dann so aussehen :


    Da muss am Ende nen Backslash rein, nur falls noch jemand vor dem Problem steht :)

    Und der schedule Wert muss in " " gesetzt werden.

    2 Mal editiert, zuletzt von Nevrion (15. Juli 2018 um 17:17)

  • Danke für den Tipp.

    Hätte es bei mir freihand eingegeben gehabt und für hier runter getippt :thumbup:

    NAS: Gehäuse: Jonsbo G3, Mainboard: MSI B460M PRO, CPU: Intel Pentium G6400, OS: OMV 6

    Client: NVIDIA Shield Pro 2019

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!