Wie Docker daemon für remote zugriff konfigurieren?

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.164
Punkte für Reaktionen
63
Punkte
68
Ich versuche gerade Docker so zu konfigurieren, das man den Daemon auch von Außerhalb über Port 2375 erreichen kann und damit docker Kommandos remote absetzen kann. Offensichtlich ist das Synology-Packet nicht dafür ausgelegt. Normalerweise aktiviert man das, in dem man dem Daemon beim Starten die Option -H tcp://0.0.0.0:2375 mitgibt. Doch sowohl die Änderung des upstart files als auch des daemon.json scheint Synology nicht zu beeindrucken, der Port wird nicht geöffnet. Wie macht man es richtig?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Die Einstellung muss in der Datei /var/packages/Docker/etc/dockerd.json durchgeführt werden:
Code:
{
   "hosts" : [ "tcp://{syno-ip}:2375", "unix:///var/run/docker.sock" ],
   "registry-mirrors" : []
}

{syno-ip} einfach durch die eigene IP ersetzen. Zugriff über den Unix-Domain-Socket nicht löschen, sonst läufte die Docker UI nicht mehr richtig.

Achtung: wenn der Docker-Pott über das Internet erreichbar ist, dann kann JEDER den Docker-Daemon steuern, es sei den zertifikatsbasierte Auth wird ebenfalls konfiguriert!
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.164
Punkte für Reaktionen
63
Punkte
68
Grrh, ich hatte schon mit der daemon.json gespielt, aber statt "hosts" nur "host": genommen, weil der Kommandozeilenparameter -H --host heisst

So gehts

Hier ist auch nichts aus dem Internet erreichbar, insofern OK.

Vielen Dank!
 

AlWire

Benutzer
Mitglied seit
27. Jan 2019
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen.

Ich habe seit einigen Tagen ein Problem mit Docker.
Bei Login auf der Weboberfläche des Portainer-Containers bekomme ich nachfolgenden Fehler:
Failure
dial unix /var/run/docker.sock:connect:connection refused
Die Container und die Netzwerke aus der DS werden hier auch nicht gelistet.

Von einem anderen Container aus wird beispielsweise seit kurzem auch der Zugriff auf einen NUT-Server abgelehnt.

Eine Zuweisung der Berechtigung mittels "usermod" bzw. "synogroup user" löste das Problem nicht.
Hat hier ggf. jemand eine Vermutung oder einen Tipp?


Grüße

Albert
 

AlWire

Benutzer
Mitglied seit
27. Jan 2019
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Die dockerd.json habe ich angepasst. Hier waren gar keine Adressen in "hosts" hinterlegt.
"unix:///var/run/docker.sock" habe ich ergänzt und das Paket neu gestartet. Die DS hatte ich schon mehrmals neu gestartet.

Der Zugriff wird jedoch nach wie vor verweigert.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Hier waren gar keine Adressen in "hosts" hinterlegt.
Aus Deiner Antwort wird nicht klar, ob Du ihn nachgetragen hast oder nicht.

Sobald Dein Socker zur Verfügung steht und Portainer sich über das Netzwerk damit verbindet (Firewall?!) muss Du in Portainer Host und IP aus "hosts" als Endpoint angeben.

"unix:///var/run/docker.sock" habe ich ergänzt und das Paket neu gestartet
Das hätte in der dockerd.json enthalten sein müssen...
 

AlWire

Benutzer
Mitglied seit
27. Jan 2019
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Ja. "unix:///var/run/docker.sock" habe ich nun nachgetragen, Auch Testweise die interne Adresse 172.17.X.X.
An der Firewall liegt es nicht.
Der Endpoint ist eingetragen.
Der Zugriff dürfte soweit auch funktionieren. Dem Anschein nach wird der Zugriff aufgrund der Zugriffsberechtigung des Benutzers verhindert.
 

AlWire

Benutzer
Mitglied seit
27. Jan 2019
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Anbei die erwähnten Screenshots.

2019-01-29_dockerd.jpg

2019-01-29_NetzwerkIP.JPG

2019-01-29_Endpunktkonfiguration.jpg

Folgender Fehler wird bei Login auf der Portainer Oberfläche ausgegeben:

2019-01-27_Verbindungsfehler.JPG
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Mir fehlen die Worte: dein Anliegen hat NICHTS mit dem ursprünglichen Thread zu tun. Kein Wunder das ich dich nicht verstanden habe. Ganz anderes Problem, ganz andere Lösung.

Warum hast Du für dein Problem keinen eigenen Thread aufgemacht und gleich die Screenshots geposte oder sogar noch besser in der Forumssuche docker.sock eingegeben und mal die ersten paar Threads durchgesehen?! Unter den ersten drei Treffern ist die Lösung für Dein Problem im Thread "Nützliche Docker Container" zu finden.
 

AlWire

Benutzer
Mitglied seit
27. Jan 2019
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hier ging es auch um den Unix-Domain-Socket.
Anhand der Forensuche konnte ich nichts finden, was das Problem letztendlich gelöst hat.
Auch der von dir gepostete Code mit Restart des Docker-Services brachte keine Besserung.

ln -s /var/run/docker.sock /volume1/docker/docker.sock

Trotzdem Danke für deine Hilfe.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Bevor Du den Unix Deamon Socket zum Thema gemacht hast ging es um den TCP-Port für den Remote Zugriff...

Gut das Du es jetzt am laufen hast!

Ehrlich gesagt Docker auf Synology ist mit verlaub "irgendwie scheisse". Ich bastel gerade an einer alternative,
damit ich die Syno nur noch als Datentopf nutzen muss.
 

Cyberius

Benutzer
Mitglied seit
18. Okt 2019
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Kein Zugriff auf Docker Container über PC

Hi!

Ich habe mit dem Synology Docker folgendes Problem:

Nach der Installation von Traefik (Reverse Proxy) über Docker und der Erstellung des Containers im Bridge-Netzwerk ist der Container Traefik über die Synology (Host) erreichbar. Der Container kann ebenfalls den Host erreichen. Dies wurde über den Ping-Befehl getestet. Leider kann ich aber nicht über den PC auf den Traefik Container zugreifen (z.B.: Backend GUI im Browser aufrufen).

Verdeutlichung:
PC (10.0.0.13) --> Synology (10.0.0.10) --> Traefik (172.17.0.2) = fail
Synology (10.0.0.10) --> Traefik (172.17.0.2) = ok

Nach langer Suche und diverser Videos und Anleitungen kam ich auf diese Synology-Seite. Auf diversen anderen Seiten ist immer die Rede von offizielen Ubuntu-Builds. Testweise habe ich sogar Docker auf dem Windows Rechner installiert, um zu testen, ob ich hierbei etwas übersehen habe. Auf dem Windows Rechner läuft der Container ohne Probleme und ich kann darauf zugreifen. Die Realität sieht jedoch so aus, dass ich für den Dauerbetrieb nicht meinen Windows Rechner verwende und kein Gerät auf dem der offizielle Ubuntu Build laufen kann, habe.... Also bleibt derzeit nur das Synology-Docker..........

Ich habe mir bei diesem Thema erhofft, dass ich aufgrund der JSON-Datei Adaptierung auf das Synology Docker über den PC zugreifen kann.

Sobald ich die JSON-Datei unter "/var/packages/Docker/etc/dockerd.json" öffne, erhalte ich folgenden Code:

Code:
{
 "data-root" : "/var/packages/Docker/target/docker",
   "log-driver" : "db"
}

Jegliche Host-Zeile fehlt. Füge ich diese manuell dieser Datei hinzu und starte anschließend Docker neu, kann Docker nicht mehr gestartet werden. Auch unter dem angegebenen Pfad kann ich eine dockerd.json Datei nicht finden......

LG
Cyberius
 

Robo_kob

Benutzer
Mitglied seit
15. Jan 2022
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
Die Einstellung muss in der Datei /var/packages/Docker/etc/dockerd.json durchgeführt werden:
Code:
{
   "hosts" : [ "tcp://{syno-ip}:2375", "unix:///var/run/docker.sock" ],
   "registry-mirrors" : []
}

{syno-ip} einfach durch die eigene IP ersetzen. Zugriff über den Unix-Domain-Socket nicht löschen, sonst läufte die Docker UI nicht mehr richtig.

Achtung: wenn der Docker-Pott über das Internet erreichbar ist, dann kann JEDER den Docker-Daemon steuern, es sei den zertifikatsbasierte Auth wird ebenfalls konfiguriert!
Hey :)

kann mit "sudo docker -H tcp://192.168.178.30:2376 ps" von meinem Mac keine Verbindung aufbauen --> "Cannot connect to the Docker daemon at tcp://192.168.178.30:2376. Is the docker daemon running?"

Meine dockende.json sieht folgendermaßen aus:

Code:
{
   "data-root" : "/var/packages/Docker/target/docker",
   "log-driver" : "db",
   "registry-mirrors" : [],
   "storage-driver" : "btrfs"
}
{
   "hosts" : [ "tcp://192.168.178.30:2375", "unix:///var/run/docker.sock" ],
   "registry-mirrors" : []
}
Synology Docker läuft und UI geht.
Kann mir jemand helfen?
 

Robo_kob

Benutzer
Mitglied seit
15. Jan 2022
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
:rolleyes: sollte es nicht sudo docker -H tcp://192.168.178.30:2375 ps sein?

Schau dir mal docker context an.. dann musst Du -H nicht jedes mal mitgeben. Damals gab es docker context noch nicht.
Sorry das ich erst jetzt antworte aber ich war im Urlaub.
Du hast selbstverständlich recht mit dem Port:2375 ;)
Geht leider auch nicht.

Bash:
docker -H tcp://192.168.178.30:2375 ps

Cannot connect to the Docker daemon at tcp://192.168.178.30:2375. Is the docker daemon running?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Die Firewall erlaub den Zugriff auch? Docker Packet nach der Änderung neu gestartet?

Wobei ich ehrlich gesagt docker context verwenden würde, da sich das direkt über ssh mit dem docker host verbinden kann. Macht aber auch nur spass, wenn man zertifikatsbasierte Authentitifizierung eingerichtet hat.
 

Robo_kob

Benutzer
Mitglied seit
15. Jan 2022
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
Ok, es geht! Aber nur wenn man ausschließlich deine Settings in der dockerd.json mit gibt, dann sind aber auch alle bisherigen Docker Container mit den Settings verschwunden was ziemlich doof ist :cautious:

In meiner geposteten (siehe #16) sind ebenfalls die Einstellungen von Synology enthalten.

Wie und wo kann ich denn erkennen mit welchen Parametern der Docker deamon (dockered) ausgeführt wird ?
 
Zuletzt bearbeitet von einem Moderator:


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat