Hauptsächlich nutze ich mein Synology NAS DS1019+ (kaufen) für Plex und Anwendungen mit Docker. Die Docker-Container enthalten die komplette Anwendung den Minecraft-Server. Um die Anwendungen zu aktualisieren, muss der Docker Container aktualisiert werden.

Inhaltsverzeichnis

So aktualisiert man den Docker Container manuell.

Synology Docker Container manuell aktualisieren

Wenn man nur sehr selten seinen Docker Container aktualisieren muss, dann kann man dies wie folgt per Hand erledigen.

  1. Docker im DSM starten
  2. In der Registry die aktuelle Version des Images runterladen.
  3. Vorhandenen Container nun stoppen
  4. Unter „Action“ nun „Clear“ auswählen und bestätigen
  5. Container starten.

Es bleiben alle Einstellungen des Containers erhalten. Solange die Daten per Volume extern auf dem NAS gemountet sind, bleiben diese ebenfalls erhalten. Dieser Prozess ist bei mehr als drei Containern recht lästig. Es geht auch einfacher.

Synology Docker Container automatisch aktualisieren

Watchtower ist ein Docker-Container, der Docker-Container aktualisieren kann. Ich nutze dazu das Docker Image containrrr/watchtower. Für die einfache Einrichtung befolgt man diese Schritte:

  1. Image containrrr/watchtower der Docker Registry runtergeladen.
  2. root-Zugriff per Shell auf das Synology NAS anlegen
  3. Auf Shell folgenden Code ausführen:
docker run -d --network host --name watchtower-once -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:latest --cleanup --include-stopped --run-once

Nun werden einmalig alle Docker-Container aktualisiert. Der dafür angelegte Container läuft einmal durch und ist danach ausgeschaltet in der Liste der Container in der Synology Docker Applikation zu finden. Nun kann man ihn manuell immer wieder bei Bedarf starten oder per Synology Task Scheduler zu bestimmten Zeiten laufen lassen. Der Befehl für den Task Scheduler ist dann folgender:

docker start watchtower-once -a

Watchtower permanent laufen lassen

Alternativ kann man auch den Scheduler in Watchtower selber nutzen. Wenn man ihn immer Mittwochs morgen um 7 Uhr starten möchte, dann gibt man folgenden Befehl auf der Shell ein:

docker run -e "TZ=Europe/Berlin" -d --restart unless-stopped --network host --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --include-stopped --schedule "0 0 7 ? * WED"

Wichtig ist hierbei die Timezone auf „Europe/Berlin“ zu stellen da man sonst einen Versatz von 2 Stunden hat. Zusätzlich wird der Container nicht beendet sondern immer wieder neugestartet. Selbst wenn er mal abgestürzt ist oder das NAS neugestartet wurde. Der letzte Parameter nutzt die cron-Syntax für das Planen des Tasks.

Das DS1019+ (kaufen) mit Docker-Unterstützung

Synology als Docker Server

Mit diesem Setup ist ein Synology NAS ein echter Anwendungsserver. Docker-Unterstützung bekommt man schon für wenig Geld mit dem DS218+ (kaufen). Es muss nicht immer das teure DS1019+ (kaufen) sein. Für mehr Geschwindigkeit kann man noch über eine SSD im Synology NAS nachdenken.

Beteilige dich an der Unterhaltung

7 Kommentare

  1. Hallo Marc,
    danke für die Anleitung. Die Punkte 1-3 habe ich gemacht. Wenn ich
    4. Unter „Action“ nun „Clear“ auswählen und bestätigen
    kommt eine Dialogbox (Deutsch: Aktion, Löschen) sagt er mir „Die folgenden 1 Container werden gelöscht. Alle Daten im Container gehen verloren, wenn er gelöscht wird. Möchten Sie wirklich fortfahren?“ Soll ich das wirklich bestätigen? Sind die Daten dann nicht weg? Danke.

    1. Ich zitiere mich selbst:

      Es bleiben alle Einstellungen des Containers erhalten. Solange die Daten per Volume extern auf dem NAS gemountet sind, bleiben diese ebenfalls erhalten.

  2. Hallo,
    man sollte noch die Timezone ergänzen (-e „TZ=Europe/Berlin“). Sonst hat man Abweichungen beim Scheduler von bis zu 2 Stunden. Je nach Jahreszeit.
    Daher wäre mein Vorschlag:
    docker run -e „TZ=Europe/Berlin“ -d –restart unless-stopped –network host –name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower –cleanup –include-stopped –schedule „0 0 7 ? * WED“

    Grüße,
    Bernd

  3. I’m getting an error message when running the schedule command:
    docker run -e „TZ=Europe/Berlin“ -d –restart unless-stopped –network host –name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower –cleanup –include-stopped –schedule „0 0 7 ? * WED“

    docker: invalid reference format.

    Comparing the code for „run once“ vs using the schedule command line, I noticed differences in the syntax: for example, double „–“ attributes…and when I selected „docker run –help“, I also noticed that „-schedule“ doesn’t appear as an attribute in the help.
    Is it wrong?
    I’m in AUS / MELB, so not sure if the timezone is screwing things up?

Schreibe einen Kommentar

Wie kann ich mich verifizieren lassen?