Posted

in

,

Updated

Portainer als Docker-Container auf der Synology Diskstation installieren

Die Synology Diskstation kann neben der Dateisynchronisierung auch als Heimserver zum Ausführen verschiedener Webapps als Docker-Container genutzt werden. Zur Verwaltung der Docker-Container kann man entweder das Synology-Paket „Docker“ (bis einschließlich DSM 7.1) bzw. „Container Manager“ (ab DSM 7.2) oder die Open-Source Software „Portainer“ verwenden. In diesem Artikel wird erklärt, wie man Portainer auf der Diskstation installiert.

Docker/Container Manager-Paket in DSM installieren

Möchte man Docker-Container auf der Synology Diskstation laufen lassen, muss man zuallererst in der Weboberfläche (DSM) über das Paket-Zentrum das Paket „Docker“ bzw. seit DSM 7.2 „Container Manager“ installieren.

Über dieses Paket kann man Docker-Container installieren und verwalten. Das funktioniert allerdings viel komfortabler mit der Software Portainer. Mit Portainer kann man außerdem sehr einfach Docker Compose files nutzen, Container-Logs einsehen und einige Einstellungen ändern, die im Docker-Paket von Synology nicht möglich sind.

Portainer ist als Docker-Container verfügbar. Daher können wir es in der DSM-Oberfläche über „Docker“ bzw. „Container Manager“ installieren. Alle weiteren Docker-Container werden wir zukünftig über Portainer verwalten und installieren. Gut zu wissen: Beide Methoden – Docker über DSM oder in der Portainer Webapp – funktionieren parallel, das heißt man sieht alle über Portainer angelegten und laufenden Container auch in der DSM Oberfläche und kann sie mit beiden Methoden beispielsweise stoppen, neustarten oder deren Status einsehen.

Ordner anlegen

In DSM klicke auf „File Station“ und lege im Ordner „docker“ einen Ordner namens „portainer“ an.

Portainer Docker-Container installieren

Image herunterladen

  • In DSM öffne „Docker“ bzw. „Container Manager“
  • Klick auf Registrierung
  • Suche nach „Portainer“
  • Rechtsklick auf „portainer/portainer-ce“ und auf „Dieses Image herunterladen“
  • Auswahl von „latest“ und Klick auf „Auswählen“

Docker-Container anlegen

Nachdem das Image heruntergeladen wurde:

  • Klick auf Container -> Erstellen
  • Image „portainer/portainer-ce:latest“ auswählen, Klick auf „Weiter“
  • „bridge“ auswählen und „Weiter“
  • Containername „portainer“ und „Automatischen Neustart aktivieren auswählen“, Klick auf „Weiter“
  • Unter „Port-Einstellungen“
    • Zeile 1: löschen
    • Zeile 2:
      • Lokaler Port: 39351
        • beliebigen freien Port wählen, beispielsweise 39351
        • diese Portnummer benötigst du erneut im Abschnitt „Sub-Subdomain für Portainer anlegen“
      • Container-Port: 9000
      • Typ: TCP
    • Zeile 3: löschen
  • Unter „Volume-Einstellungen“ -> Ordner hinzufügen -> docker/portainer auswählen, anschließend Mount-Pfad „/data“ eintragen und Klick auf „Weiter“ und „Fertig“

Der Docker-Container ist jetzt angelegt und sollte automatisch starten.

Sub-Subdomain für Portainer anlegen

Um per (Sub-)Subdomain auf Portainer zugreifen zu können, musst du zuerst ein Wildcard-Zertifikat anlegen.

Anschließend richtest du den Reverse Proxy-Server der Diskstation ein, unter Verwendung folgender Angaben:

  • Quelle
    • Protokoll: HTTPS
    • Hostname: portainer.name.synology.me
      • statt „name“ verwendest du hier deine selbst gewählte Synology-Subdomain
    • Port: 443
  • Ziel
    • Protokoll: HTTP
    • Hostname: localhost
    • Port: 39351
      • hast du im Abschnitt „Docker-Container anlegen“ unter „Lokaler Port“ einen andere Portnummer eingetragen, musst du diese hier entsprechend ändern

Zugriff auf Portainer und Benutzer anlegen

Jetzt kannst du im Browser https://portainer.name.synology.me („name“ durch deine Synology-Subdomain ersetzen) aufrufen und landest auf der Portainer-Weboberfläche.

Beim ersten Start von Portainer musst du einen Administrator-Account anlegen. Nachdem du Benutzername und Passwort festgelegt und den Benutzer erstellt hast, erscheint das „Quick Setup“. Hier wählst du „Get Started“. Die Docker-Umgebung auf deiner Diskstation wird automatisch erkannt und angezeigt. Mit einem Klick auf die Kachel mit der Bezeichnung „local“ verbindest du dich und dir werden die Details der Umgebung angezeigt. Sollte das nicht klappen, schaue zur Fehlerbehebung in den nächsten Abschnitt.

Hast du neben Portainer keine weiteren Docker-Container über die DSM-Oberfläche erstellt, wird unter „Containers“ und „Images“ jeweils eine 1 stehen.

Weitere Infos zur Einrichtung von Portainer findest du unter https://docs.portainer.io/start/install-ce/server/setup

Problem: Lokale Docker-Umgebung wird nicht gefunden

Einer unserer Leser berichtete in den Kommentaren, dass bei ihm in Portainer im Abschnitt „Environments“ nichts angezeigt wird, also die lokale Docker-Umgebung „local“ von Portainer nicht gefunden wird. Das geht einher mit folgender Fehlermeldung:

failed to retrieve docker info | error=“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?“

Das deutet darauf hin, dass in der Konfiguration des Portainer Docker-Containers ein „volume binding“ zum Pfad „/var/run/docker.sock“ fehlt. Teilweise wird dieser automatisch hinzugefügt oder auch nicht – wie in diesem Fall. Der Eintrag kann aber leider nicht direkt über Docker/Container Manager in der DSM-Oberfläche bei den Volume-Einstellungen hinzugefügt werden, da das Dialogfenster nur entsprechende Ordner oder Dateien auf dem Festplatten-Volume (also alles innerhalb des Ordners „volume1“) zur Auswahl anbietet. Für „/var/run/docker.sock“ müssten wir aber einen absoluten Pfad angeben. Als Workaround exportieren wir die aktuelle Konfiguration, fügen den Eintrag in der Konfig-Datei hinzu und importieren diese anschließend wieder.

Export der Docker-Container-Konfiguration

  • Öffne Docker/Container Manager in der DSM-Oberfläche
  • Klicke links auf „Container“
  • Im rechten Bereich Rechtsklick auf den Eintrag „portainer“ -> Einstellungen -> Exportieren
  • Wähle „Typ: Containereinstellungen exportieren“ und „Ziel: Auf lokalen Computer exportieren“ -> Klick auf Button „Exportieren“. Es wird eine JSON-Datei heruntergeladen, die die Docker-Container-Konfiguration enthält.

Konfigurationsdatei anpassen

  • Öffne die heruntergeladene JSON-Datei mit einem Texteditor, z. B. Notepad++
  • Hat man mit dem oben geschilderten Problem zu kämpfen, steht in der Konfig-Datei unter „volume_bindings“ nur ein Eintrag – es sollten aber zwei sein. Ergänze den Eintrag so, wie im folgenden Code bzw. Screenshot ersichtlich: Der markierte Teil muss hinzugefügt werden.
  • Speichere die JSON-Datei anschließend.
"volume_bindings" : [
  {
	 "host_absolute_path" : "/var/run/docker.sock",
	 "mount_point" : "/var/run/docker.sock",
	 "type" : "rw"
  },
  {
	 "host_volume_file" : "/docker/portainer",
	 "mount_point" : "/data",
	 "type" : "rw"
  }
]

Bisherigen Portainer Docker-Container löschen

Lösche den (nicht funktionierenden) Docker-Container über die DSM-Oberfläche, damit es nachher beim Importieren nicht zu einem Namenskonflikt oder doppelt belegten Ports kommt.

  • Stoppe den Docker-Container „portainer“ mit dem Schiebeschalter.
  • Anschließend mit Rechtsklick auf den entsprechenden Eintrag -> Aktion -> Löschen
  • Dann mit Klick auf „Löschen“ bestätigen.

Importieren der JSON-Konfig für den Docker-Container

  • Gehe in Docker/Container Manager in der DSM-Oberfläche links auf „Container“.
  • Klicke rechts auf das Menü Einstellungen -> Importieren
  • Klicke im sich öffnenden Dialogfenster auf Hochladen -> Durchsuchen. Wähle dann die eben veränderte JSON-Datei aus und bestätige jeweils mit Klick auf „Öffnen“ und „Auswählen“.

Mit diesem Workaround sollte Portainer jetzt auch deine lokale Docker-Umgebung finden.

Fazit

Ab jetzt kannst du alle (weiteren) Docker-Container über Portainer managen, sodass du dich nicht mehr mit Docker/Container Manager in der DSM-Oberfläche „herumplagen“ musst. Portainer bietet deutlich mehr Flexibilität und kann beispielsweise auch Standard Docker Compose files einlesen.

Kommentare

8 Antworten zu „Portainer als Docker-Container auf der Synology Diskstation installieren“

  1. AF

    Hallo!
    Danke für die Anleitung. Portainer startet und Benutzer wurde angelegt. Leider findet er aber LOCAL nicht bzw zeigt nix an dort. Kann also meinen lokalen Docker nicht verbinden. Eine Idee?

    Danke
    AF

  2. AF

    Update: Fehlermeldung im Protokoll „failed to retrieve docker info | error=“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?“ “

    Irgendwie findet er meinen Docker nicht.

    1. Thing King

      Danke für das Lob 🙂

      Schade, dass es bei dir noch nicht komplett läuft.
      Du könntest folgendes überprüfen:
      Öffne Docker/Container Manager in der DSM-Oberfläche, klicke auf „Container“ -> Rechtsklick auf den Eintrag „portainer“ -> Einstellungen -> Exportieren -> wähle „Typ: Containereinstellungen exportieren“ und „Ziel: Auf lokalen Computer exportieren“ -> Klick auf Button „Exportieren“. Es wird eine JSON-Datei heruntergeladen, die du mit einem Texteditor öffnen kannst.
      Stehen dort unter „volume_bindings“ zwei Einträge?
      Bei mir sieht es so aus:

      "volume_bindings" : [
        {
      	 "host_absolute_path" : "/var/run/docker.sock",
      	 "mount_point" : "/var/run/docker.sock",
      	 "type" : "rw"
        },
        {
      	 "host_volume_file" : "/docker/portainer",
      	 "mount_point" : "/data",
      	 "type" : "rw"
        }
      ]

      Der Eintrag mit „/var/run/docker.sock“ wurde also bei mir anscheinend beim Anlegen des Portainer Docker-Containers automatisch hinzugefügt. Sollte dieser bei dir fehlen, könnte es vielleicht daran liegen.

  3. AF

    Ach danke für Deine schnelle Antwort! m.E. die einzige Anleitung, welche ohne Console auskommt (zumindest fand ich nix) 😉

    Bei mir steht:

    "volume_bindings" : [
        {
           "host_volume_file" : "/docker/portainer",
           "mount_point" : "/data",
           "type" : "rw"
        }

    Der erste Teil ist wohl leer und der Grund. Wie bekomme ich das in die Config? – In den Volume Einstellungen bei Docker vermutlich?

    Dort Einträge anlegen? wie „host_absolute_path“?

    Danke nochmals
    AF

    1. Thing King

      Theoretisch ja, allerdings kann man leider über Docker/Container Manager in der DSM-Oberfläche bei den Volume-Einstellungen über das Dialogfenster nur entsprechende Ordner oder Dateien auf dem Festplatten-Volume (also alles innerhalb des Ordners „volume1“) auswählen. Für „/var/run/docker.sock“ müssten wir aber einen absoluten Pfad angeben. Das wird anscheinend in der grafischen Oberfläche nicht unterstützt.

      Ich habe im Artikel oben einen neuen Abschnitt mit einem Lösungsvorschlag hinzugefügt: „Problem: Lokale Docker-Umgebung wird nicht gefunden“
      Hoffentlich hilft das weiter 🙂

  4. AF

    DANKE! Werde es gleich probieren!

  5. AF

    Update: Es klappt! DANKE DANKE! Habe mir nun Deine Seite fest gebookmarked… auch wegen der 3D Prints…

    1. Thing King

      Super, das freut mich 👍☺️

Schreibe einen Kommentar

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

Consent Management Platform von Real Cookie Banner