Portainer zur Verwaltung von Docker auf der Synology DiskStation

In Vorbereitung auf ein paar weiterführende Projekte im Zusammenhang mit Docker habe ich mich nun endlich mal mit Portainer (https://portainer.io) als Docker Weboberfläche zur Administration befasst.

Da ich mit dem Docker-Paket auf meiner DS1515+ bereits eine laufende Docker-Instanz besitze, wollte ich zuerst einmal versuchen mit Portainer eben diese Instanz zu verwalten.

Zwar besitzt die Docker-Instanz auf der DiskStation bereits eine Weboberfläche für die Administration, jedoch bietet diese, sehr einfach gehaltene Oberfläche innerhalb des DSM nicht einmal einen Bruchteil der Möglichkeiten, die Docker eigentlich von Haus aus mit sich bringt. Warum also nicht die Möglichkeiten mit Portainer um ein Vielfaches erweitern?

Die folgenden Schritte bringen also Portainer als Docker-Container auf der DS zum Laufen.

Wie immer habe ich dabei versucht das Ganze ohne „lästige Kommandozeile“ umzusetzen, um zu beweisen dass Docker nicht nur etwas für IT-Pros und Software-Entwickler ist. 🙂

Mal schauen ob das klappt. 😉

Schritt 1: Vorbereitungen

Ich gehe mal davon aus, dass das Docker-Paket von Synology bereits auf eurer DS läuft und Ihr Zugriff auf die Weboberfläche der DS habt. Falls ihr noch kein Docker habt, hier noch einmal der Link inkl. der unterstützten DS-Modelle:
https://www.synology.com/de-de/dsm/packages/Docker

Für das Starten eines Containers benötigt ihr wie üblich ein Image. Dieses kann man sich entweder selbst zusammenbauen oder wie in unserem Fall einfach auf ein fertiges, offizielles Image aus dem Docker Hub zurückgreifen.
Über den Punkt “Registrierung” sucht ihr also nach “portainer” und ladet euch das Image “portainer/portainer:latest” herunter.

Anschließend müssen wir noch ein Verzeichnis auf der DS anlegen, welches wir in den Portainer-Container einbinden um dort persistente (Konfigurations-)Daten speichern zu können. Wer bereits mein Tutorial zum Thema Docker und ioBroker gelesen hat, kennt das schon. Das ist der Ort, außerhalb des Containers, an dem die Daten nicht verloren gehen wenn man den Container löscht oder updatet. 😉
Bei mir wird das, analog zum ioBroker Container, der Ordner “portainer_data” unter “docker” (/volume1/docker). Anlegen lässt sich das Verzeichnis ganz einfach über die FileStation der DS. So wie hier zu sehen:

Damit sind dann die Vorbereitungen auch schon abgeschlossen.

Schritt 2: Container starten

Wie ihr vielleicht schon wisst, muss nun aus dem heruntergeladenen Image noch ein Container gestartet werden. Normalerweise geht dies komfortabel über die Weboberfläche von Docker auf der DiskStation.

In diesem Fall treffen wir aber auf ein Problem. Da wir mit Portainer später die lokale Docker-Instanz verwalten und administrieren wollen, müssen wir dafür sorgen, dass der Container auf die Datei “portainer.sock” zugreifen kann. Diese Datei ist die Zentrale API-Schnittstelle von Docker über die die Docker-Befehle an die Docker-Instanz übergeben werden. Leider liegt die Datei unter “/var/run/” auf dem Root-Filesystem der DiskStation, auf das wir natürlich aus der Docker-Oberfläche der DS nicht zugreifen können.
Ob wir wollen oder nicht, wir können den Container auf der DS wohl nur per Kommandozeile erzeugen.
Falsch. Oder zumindest nur zum Teil richtig. Es gibt nämlich einen Weg, über den wir den Befehl zum einmaligen Anlegen des Containers ganz einfach, ohne Verbindung per SSH o. Ä. auf der DS ausführen können. Der Aufgabenplaner.
Über den Aufgabenplaner ist es unter Anderem möglich benutzerdefinierte Skripte zeitgesteuert ausführen zu lassen. Diese Funktion wollen wir nun also zweckentfremden um unseren initialen Container mit Zugriff auf das Root-Filesystem der DS zu deployen.

Der Befehl, den wir dazu verwenden lautet:

docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer_data:/data portainer/portainer

Kurze Erläuterung was der Befehl tut:

  • “docker run” zum Starten des Containers
  • “-d” Container läuft im “detached mode”
  • “-p 9000:9000” öffnet Port 9000 für den zugriff auf die Weboberfläche
  • “–name portainer” Name des Containers
  • “–restart always” Aktiviert automatischen Restart des Containers
  • “-v /var/run/docker.sock:/var/run/docker.sock” bindet die angesprochene docker.sock Datei ein
  • “-v /volume1/docker/portainer_data:/data” bindet das Data-Verzeichnis ein
  • “portainer/portainer” verwendetes Image für den Container
Hinweis: Es kann sein, dass der Port 9000 auf der DS bereits in Verwendung ist. Sollte dies der Fall sein kann man den Port ganz einfach umleiten. Dazu im docker-run-Befehl einfach „-p 9000:9000“ durch z.B. „-p 8889:9000“ ersetzen. Die Portainer-Weboberfläche (siehe weiter unten) ist dann natürlich unter „http://[IP_oder_Name_der_DS]:8889“ zu erreichen.

Profis hauen den Befehl nun einfach in die Kommandozeile, auf die Sie sich vorher per Putty und SSH verbunden haben (Muss auf der DS allerdings vorab eingerichtet werden).

Wir versuchen es mal über den Weg “Systemsteuerung > Aufgabenplaner” auf der Weboberfläche der DS und erstellen eine neue “geplante Aufgabe > benutzerdefiniertes Skript”. Im Register “Allgemein” geben wir dem Vorgang einen Namen und lassen den Benutzer unter dem der Befehl ausgeführt wird auf “root”. Den Haken “Aktiviert” entfernen wir:

Auf der Registerkarte “Zeitplan” können wir zu Sicherheit “Am folgenden Datum ausführen” auswählen und ein Datum aus der Vergangenheit konfigurieren.

Auf der Registerkarte “Aufgabeneinstellungen” kopieren wir den oben aufgeführten Startbefehl in das Feld unter “Benutzerdefiniertes Skript”. Mit OK wird gespeichert und die Aufgabe ist erstellt:

Die neu erstellte Aufgabe können wir nun auswählen und über den Button “Ausführen” den Container starten.

Anschließend sollte nach wenigen Sekunden in der Docker-Oberfläche der Container “portainer” auftauchen.

Schritt 3: Auf Portainer zugreifen und Erstkonfiguration durchführen

Nachdem der Container jetzt gestartet ist, ist die neue Weboberfläche unter folgendem Link erreichbar:

http://[IP_oder_Name_der_DS]:9000

Beim ersten Aufruf möchte Portainer einen Benutzer und ein Kennwort zum Schutz anlegen. Die Daten können natürlich frei gewählt werden.

Nachdem der erste Benutzer angelegt ist, möchte Portainer wissen welche Instanz wir damit verwalten wollen. Wir wählen hier “Local” aus und bestätigen mit “Connect”.

Dann gelangen wir schließlich auf die Übersichtsseite der Portainer-Weboberfläche. Unten sehen wir den Host (local) mit einem grünen Symbol (up) daneben. Dies bedeutet, dass die Verbindung zur Docker-Instanz erfolgreich hergestellt wurde.

Portainer ist nun Einsatzbereit. Viel Spaß.

Bei Fragen und Anregungen zum Tutorial freue ich mich auf eure Kommentare. Bitte berücksichtigt, dass ich keinen individuellen Support per E-Mail leisten kann. Nutzt also bitte die öffentlichen Kanäle wie Kommentare, Foren oder Social Media. Gerne könnt ihr mich bei Bedarf auch per E-Mail oder Direktnachricht auf einen Post/ Thread/ Kommentar aufmerksam machen. Danke.

MfG,
André

About the author: André

André
Familienvater und bekennender Technik-Nerd. Beruflich unterwegs als Fachinformatiker für Systemintegration bei einem deutschen IT-Dienstleister. In der Freizeit begeisterter "Home-Automatisierer" bzw. "Smarthome-Bastler" und (zumindest bei schönem Wetter) gerne mit der Familie in verschiedenen Outdooraktivitäten unterwegs.

32
Hinterlasse einen Kommentar

avatar
10000
10 Kommentare
22 Antworten
2 Abonnenten
 
Meiste Antworten
Beliebtester Kommentar
12 Kommentatoren
AlexGuidoMichael FothenpeMPhilip Letzte Kommentatoren
  Abonnieren  
Benachrichtige mich zu:
Guido
Gast
Guido

Ich bekomme es nicht zum laufen. Im Docker-Fenster unter „Überblick“ steht unter aktive Container „portainer“ mit CPU und RAM Angaben. Im „Protokol-Fenster“ steht „Start container portainer“. Unter „Netzwerk“: Bridge 1 verbundener container“. Soweit läuft „da“ was. Gehe ich auf die Desktop-Verknüpung „Docker/portainer“ und unter „Protokoll“ steht dort auch eín Eintrag „Starting Portainer 1.21.0 on : 8999“. Nach 5 min bebendest sich der Portainer mit demHinweis, dass kein Admin eingetragen wurde. Scheint auch zu laufen. Versuche ich mit dem Browser auf den Portainer mit „http://192.168.xxx.xxx:8999“ zu kommen, erhalte ich einen Seiten-Ladefehler. Firewall- und Virensoftware habe ich ausgeschaltet. Warum klappt das nicht?… Mehr lesen »

Michael Fothen
Gast
Michael Fothen

Hallo Andé,
ich habe auf meiner Synology nun in Portainer einen iobroker-Container mittels MACVLAN (gemäß Deiner hervorragenden Anleitung) unter 192.168.1.222 am laufen. Die Synology selbst hat 192.168.1.225.
Leider komme ich von Außen aber über OpenVPN (auch auf der Synology) unter der dem OpenVPN-Client zugeteilten 192.168.3.6 nicht auf 192.168.1.222:8081 bzw. 192.168.1.222:8082.
Pingen kann ich die 192.168.1.222 von der 192.168.3.6 aus, aber mehr geht nicht.
Muss ich da noch irgendwo eine Brücke schlagen?
Danke und Gruß
Michael

peM
Gast
peM

Hallo André, die Anleitung ist echt top. Leider liegt bei mir irgendwo der Wurm drinnen. Gehe ich nach Anleitung vor und gebe den Befehl via PuTTY ein, dann verhindert der bereits zuvor installierte Container die Ausführung der Anweisung. Deinstalliere / benenne ich diesen um, bildet er aufgrund der Anweisung einen neuen Container (portainer) ohne einen Benutzer (verlangt aber „irgendwelche“ Zugangsdaten. Hab’s n paar Mal getestet… keine Ahnung (ioBroker hat auch nicht funktioniert). Ohne Anweisung ist der Container „down“ weil er keinen Zugriff hat… trotzdem merci

Philip
Gast
Philip

Hallo André,
ich konnte Dank deiner Anleitung Portainer und auch ioBroker erfolgreich bei mir einbinden.
Vielen Dank dafür .
Jetzt zeigt mir Portainer, dass eine neue Version verfügbar ist.
Wie kann ich hier ein Update durchführen, ohne dass alle Einstellungen weg sind?
Vielen Dank schonmal.
Gruß Philip

Guido
Gast
Guido

Hallo André,

vielen Dank für das Tutorial. Eigentlich wollte ich nur IOBroker auf die Synology bekommen. Habe mir dann aber gleich den Portainer mit angeschaut.
Mein Portainer sieht jetzt genau so aus wie in deinem letzten Bild. Im IObroker Tutorial hats Du aber auf der linken Seite jede Menge links mehr. Wie bekomme ich die dahin. damit ich auch die Auswahl treffen kann?

Thomas
Gast
Thomas

Hallo André,
kurze Frage dazu, mein Portainer läuft ohne Probleme, unter anderem Dank deines Tutorials.
Gibt es beim Portainer die Möglichkeit mehrere Container zu verbinden?
Beispiel, habe PHPiAm zur IPVerwaltung als Container und ein Container mit MySQL, mithilfe eines anderen Tutorials konnte ich die per Befehlszeile verbinden.
Wollte dies aber mal im Portainer nachvollziehen, finde da aber keinen Eintrag. Auch Google hilft nicht viel weiter, wie es scheint, kann Portainer das nicht?!
Gruß Thomas

Mischa
Gast
Mischa

Hallo Andre, vielen Dank für deine tollen Anleitungen! Ich habe genau das gleiche Problem wie Dirk, mein Host (local) ist leider nicht grün, sondern rot 🙁 Diese Fehlermeldung erhalte ich, wenn ich auf den Host klicke: Failure Endpoint is unreachable and there is no snapshot available for offline browsing. Deine Befehlszeile habe ich wie folgt um –privileged erweitert: docker run -d -p 9000:9000 –privileged –name portainer –restart always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer_data:/data portainer/portainer Leider hat das nicht geholfen. Den Ordner „/volume1/docker/portainer_data“ habe ich einfach ohne weitere Ergänzungen oder Rechte in der File Station erstellt. Mein Endpoint sieht so aus: local… Mehr lesen »

Ralf
Gast
Ralf

Läuft einwandfrei, Danke für die umfangreiche Anleitung!

Gruß, Ralf

Carsten
Gast
Carsten

Hi, danke auch für die ausführliche Anleitung.
Ich wollte jetzt auch noch ein automatisches Update meiner Dockerpakete mittels Watchtower einführen, leider hat mir das meinen ioBroker geschrottet (bzw. das komplette Dockerimage von der Syno gelöscht).

Wie haltest Du Deine Dockerpakete auf Stand ?

Dirk
Gast
Dirk

Hallo Andre, vorab möchte ich sagen, dass mir Dein Tutorial zu ioBroker zum EInen den A… gerettet hat, zum Anderen hat es mir wesentlich zum Verständnis des Dockers beigetragen. Ich verstehe die Mechanismen nun deutlich besser, auch wenn es da „nur“ um den ioBroker ging. Du hast hier ganz tolle Beschreibungen geliefert, die man sonst quasi nicht in den Weiten des Internets findet. Nun zum Eigentlichen. Ich habe die Installation wieder nach Deiner tollen Anweisung durchgeführt. Leider hatte ich nach der Anmeldung an den portainer keine Verbindung zu local. Es kam immer „so-und-so ist unreachable“. Nach kleiner Recherche im Internet… Mehr lesen »