Docker Container automatisch aktualisieren

3 min Lesezeit

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.

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 V2tec/Watchtower 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:

  watchtower:
    image: v2tec/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker/config.json:/config.json
    command: watchtower pihole office firefox-syncserver aria2c   --interval 30
    restart: unless-stopped

alle Container werden aktualisiert:

  watchtower:
    image: v2tec/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker/config.json:/config.json
    command: --interval 30
    restart: unless-stopped

Dieser Code sorgt dafür  das die Überprüfung alle 30 Minuten ausgeführt wird. In diesem Beispiel werden die Container mit dem Namen Watchtower, Pihole, Office, Firefox-syncserver und aria2c überprüft und bei Bedarf aktualisiert. Hier die Anmerkung erlaubt sein,das Watchhtower generell alle Container kontrolliert. Nur wenn man ,wie ich, selektiv aktualisieren möchte, werden die Containernamen eingetragen.

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

chmod a-x docker-compose.yml
docker-compose up -d

Der Container sollte nun starten. Sobald die ersten Updates durchgelaufen sind, schaut man in die Log Datei des Watchtower Containers. 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. 🙂

Schreibe einen Kommentar

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

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.