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 Fall von Portainer treffen wir hier 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 “docker.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 oder in Zukunft verwendet werden soll (ioBroker benötigt z.B. diesen Port!). 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. Dies sollte also jeder machen, der im Nachgang den ioBroker-Container aufsetzen möchte. 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.
Abonnieren
Benachrichtige mich zu:
guest
111 Kommentare
Inline Feedbacks
View all comments
Jens

Hey Andrè, danke für die gute Erklärung. Ich hab portainer zwar per SSH gestartet, weil ich das unkomplizierter fand, aber es hat alles direkt funktioniert.

Günther Seifert

bekomme beim Versuch mit local zu connecten diese Fehlermeldung
Failure
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Friedhelm

Vielen Dank für die gute Erklärung der Installation. Ich habe damit auch den IOBroker installiert bekommen. Jetzt wollte ich ein zweites Docker Image (openHAB um die beiden zu vergleichen) installieren und habe wohl in der Konfiguration einen Fehler gemacht. Den Docker Container habe ich noch nicht installiert, aber ich habe zwei Netzwerke (_config), die ich nicht mehr löschen kann. Ich bekomme die Meldung, dass sie „in use“ sind. Von der Kommandozeile sieht das so aus: Error response from daemon: error while removing network: configuration network „openHAB_pub_config“ is in use Das netz hängt aber noch nicht an einem „_pub“-Netz und auch… Mehr lesen »

Enrico

Hallo. Ich bringe ihn zum laufen, dank deiner Anleitung. Leider sieht er keinen meiner bisherigen angelegten Container. Liegt es daran, dass diese im „host Modus“ laufen und nicht wie Portainer im „Bridge Modus“?

Vielen Dank für Deine/Eure Hilfe!

Beste Grüße
Enrico

MarcoHH

Hallo, ich habe nach erfolgreichem einrichten folgenden Fehler im Log vom Portainer:
[WARN] [docker,snapshot] [message: unable to snapshot engine version] [endpoint: local] [err: Error response from daemon: client version 1.40 is too new. Maximum supported API version is 1.39]

Was kann ich tun? Was soll das eigentlich bedeuten?

Vielen Dank!

Martin

Failure Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Startet nicht habe den Docker auf Volume 2 den text mit volume 1 hab ich auf 2 geändert Docker startet den container auch nicht automatisch mit dem Aufgabenplaner muss Ich da was anpassen…
docker run -d -p 8889:9000 –name portainer –restart always -v /var/run/docker.sock:/var/run/docker.sock -v /volume2/docker/portainer_data:/data portainer/portainer Lg

Michael

Erstmal vielen Dank für die tolle Anleitung. Ich habe vor einiger Zeit portainer erfolgreich installiert. Nun gibt es wohl ein update und ich frage mich nun wie man portainer selbst updaten kann? iobroker geht ja ganz einfach über recreate das funktioniert aber bei portainer nicht. Über eine Antwort würde ich mich freuen.

MfG Michael

Thiemo

Hallo, ich bin der Anleitung gefolgt und nach dem Aufgabenplaner ist auch der container portainer da, allerdings kann ich diesen nicht anschalten, er ist immer angehalten. Bekomme die Rückmeldung Docker-API ist fehlgeschlagen.

Nach der Variante den Befehl in putty einzutragen kommt folgendes:

docker: Got permission denied while trying to connect to the Docker daemon socket
at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create?name=portainer: dial unix /var/run/docker.sock: connect: permission denied.

Ich muss zugeben nachdem ich in der Hilfe nachgeschlagen habe, kann ich damit nichts anfangen.
Hast du einen Tip ?

Metzger

Hallo,

vielen Dank für das super TUT.
Noch versuche ich den USB Port von der Synology über den Portainer an den Docker durchzuschleifen.
Aber bisher leider ohne erfolg.
Ich war der meinung es müsste im Portainer über Runtime & Ressourcen klappen, aber vlt gebe ich da die falschen Daten.

Hintergrund: Ich möchte meinen Stromzähler wieder auslesen können.
Wäre dankbar, wenn mir jemand helfen könnte.

Danke

Guido

Hallo,
danke für das Tutorial.
Beim ersten Versuch hat es nicht funktioniert. Im Log des Docker stand, dass der Port 9000 belegt ist.
Dann habe ich den Container wieder gelöscht und das Script angepasst. Anstatt 9000, habe ich 9090 genommen.
Der Container wurde sofort erstellt und läuft auch.

Nun kann ich allerdings die Oberfläche nicht erreichen.
http://lokaleIP:9090 öffnet den Portainer nicht.

Kann mir jemand helfen?

Peter

Hallo, bin von einer „normalen“ Installation auf einer alten Synology ohne Docker und Rasberry Pi 2 jetzt hoffentlich eine zeitlang „umzugsfrei“….Vielen Dank für die Super-Anleitung, ohne Supporter wie dich säße ich wohl weiter im Dunkeln!

Peter

Danke für die tolle Anleitung!

Tobias

Hallo, vielen Dank für die Super Anleitung. Ich habe nur leider ein Problem. Sobald ich meine Synology Neustarte ist der erstellte Container (Iobroker) verschwunden. Ebenfalls kann ich die Container nicht stoppen dann verschwinden Sie auch. Ein neustarten des Container funktioniert ohne Probleme. Hab das ganze auch schonmal neuinstalliert leider ohne Erfolg gleiches Syntom. Evtl eine Idee?

Jens

Hallo, vielen Dank für die tolle Anleitung. Ich habe den Portainer auf meinem QNAP TS-251+ installiert. Ich habe den Weg via Putty SSH genommen und habe die Parameter für die QNAP ein wenig anpassen müssen, da die shares anders sind als auf der DS. Aus „-v /volume1/docker/portainer_data:/data“ , war dann bei mir „-v share/Container/portainer_data:/data“. Damit hat es geklappt. Jetzt will ich auch noch IoBroker installieren und werde Dein Tutorial weiter nutzen. Danke Jens PS: Da Ich kein NAS und IT-Experte bin, noch eine kleine Frage…. Ist es sicher dass der Portainer nur via Login/Password abgesichert ist? Die Website zeigt ja… Mehr lesen »

BLRD

Hi zusammen, nach der(Super) Anleitung konnte ich den portainer installieren. Jetzt möchte ich noch den iobroker installieren, habe aber festgestellt, im Log des Containers, dass es wahrscheinlich ein Problem gibt: 2019/11/05 13:58:06 Templates already registered inside the database. Skipping template import. 2019/11/05 13:58:06 Starting Portainer 1.22.1 on :9000 2019/11/05 13:58:06 server: Reverse tunnelling enabled 2019/11/05 13:58:06 [DEBUG] [chisel, monitoring] [check_interval_seconds: 10.000000] [message: starting tunnel management process] 2019/11/05 13:58:06 server: Fingerprint ee:3c:ee:e3:1d:d8:9b:af:46:01:00:e6:49:5a:42:b6 2019/11/05 13:58:06 server: Listening on 0.0.0.0:8000… 2019/11/05 14:07:57 http error: Invalid JWT token (err=Invalid JWT token) (code=401) 2019/11/05 14:07:57 http error: Unauthorized (err=Unauthorized) (code=401) 2019/11/05 14:07:57 http error: Unauthorized… Mehr lesen »

Markus

Vielen Dank für das HowTo – funktioniert einwandfrei

Olli

Moin, tollte Tut! Wie update ich denn das Ganze? Image löschen und Container neu bauen? Die Daten bleiben ja erhalten.

Winfrid

Hallo André,
vielen Dank für die sehr gute und ausführliche Anleitung.
Wenn ich einen kleinen Hinweis anbringen darf: unter Schritt 2: Container starten, 2. Absatz muss es „docker.sock“ anstatt „portainer.sock“ heißen. 😉
Schönen Gruß
Winfrid

tinkertom

Vielen Dank für die ausführliche und sehr gut nachvollziehbare Dokumentation. Ich konnte auf Anhieb alles zum Laufen bringen. Daumen hoch für deine Mühe!

Rustus

Hallo André, habe ein ioBroker Image im Docker auf einer Synology DS am Laufen. Bei der Installation habe ich mich genau an das Tutorial von Dir gehalten. Dafür ein großes Dankeschön von mir. Habe zwar nicht alles verstanden warum man das so macht, aber es hat Alles geklappt. Ich habe im Docker der DS ein Portainer- und anschließend ein ioBroker-Container installiert. Der ioBroker läuft über macvlan mit eigener IP im Netz und ist auch erreichbar. Vor kurzem kam nun die Meldung im ioBroker, dass es eine neue Version des admin-Adapters gibt. Ich habe den admin-Adapter aktualisiert und damit begann mein… Mehr lesen »

Jan

Hallo Andre,
leider bekomme ich den protainer net zum laufen.. Wenn ich den Befehl im Aufgabenplaner starte passiert nix unter „Docker – Container“ läuft nix…
Auch mit dem Port 8889 nix…kann das seine das die DS den befehl irgendwo blockiert?
Danke
LG Jan

Andreas

Super Anleitung.
Hat auf anhieb alles funktioniert!
Danke!

Oleksiy Antonov

Hello,
It seems like after latest update (27.08.2019) of Synology Docker package Portainer is not working anymore.
On my configuration (fresh installation 4 days ago) Portainer not more accessible. Could you please check?
Thank you!

Alex

Hallo,
danke für die Hilfe.
Portainer läuft inzwischen.
Jedoch ist unter local kein grünes Zeichen mit UP zusehen,sondern ein rotes down.
wie bekomme ich das hin?

MfG Alex

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 »