2017-06-10 5 views
0

Ich bin weg von Docker-komponieren Dateien zur Verwendung von Docker Schwarm, aber ich kann einfach nicht herausfinden.Docker Schwarm und Service Discovery

Ich habe zwei Dienste - einen nginx-Proxy, und eine Website beide laufen in Docker Schwarm ganz gut (die drei Knoten hat)

Das Problem, das ich habe ist, ich brauche nginx zu konfigurieren, dass das Backend proxy_pass Webseite. Derzeit kann ich dies nur durch Angabe einer IP-Adresse eines der Knoten erreichen.

werden Meine Dienste wie folgt erstellt:

docker service create --mount type=bind,source=/../nginx.conf,target=/etc/nginx/conf.d/default.conf \ -p 443:443 \ --name nginx \ nginx

und

docker service create --name ynab \ -p 5000:5000 \ --replicas 2 \ scottrobertson/fintech-to-ynab

Ich habe versucht, die Servicenamen verwenden, aber das funktioniert einfach nicht.

Wirklich ich glaube nicht, dass ich muss auch die YNAB Service-Ports aussetzen (zumindest das funktionieren würde, wenn ich Docker-compose verwendet)

In einem der nginx Container Ich habe versucht, die folgenden: [email protected]:/# curl http://ynab:5000/ping curl: (6) Could not resolve host: ynab [email protected]:/# curl http://nginx:5000/ping curl: (6) Could not resolve host: nginx [email protected]:/# curl http://127.0.0.1:5000/ping curl: (7) Failed to connect to 127.0.0.1 port 5000: Connection refused [email protected]:/# curl http://localhost:5000/ping curl: (7) Failed to connect to localhost port 5000: Connection refused

die Prozessliste Mit Hilfe ich auf die laufenden Instanzen id versucht verbinden und Name: [email protected]:/# curl http://ynab.1:5000/ping curl: (6) Could not resolve host: ynab.1 [email protected]:/# curl http://pj0ekc6i7n0v:5000/ping curl: (6) Could not resolve host: pj0ekc6i7n0v

Aber ich kann nur bekommen es, wenn ich die Knoten öffentliche IP-Adressen verwenden, um Arbeit: [email protected]:/# curl http://192.168.1.52:5000/ping pong [email protected]:/# curl http://192.168.1.53:5000/ping pong [email protected]:/# curl http://192.168.1.51:5000/ping pong

Ich möchte wirklich keine öffentliche IP verwenden, falls dieser Knoten ausfällt. Ich bin mir sicher, ich muss nur etwas falsch machen!

+0

Nicht getestet, aber Sie müssen sie auf die gleiche Netzwerk-Iirc setzen. 'docker network create -d Überlagerung my-net',' docker service create --network my-net ... ' – johnharris85

+0

Sie sind richtig! das ist, was es war - fügen Sie es als eine Antwort hinzu, also kann ich Ihnen falsche Internet-Punkte geben! –

Antwort

1

Die Dienste müssen mit demselben Netzwerk verbunden sein, damit dies funktioniert.

$ docker network create -d overlay fake-internet-points 
$ docker service create --name service_one --network fake-internet-points [...] 
$ docker service create --name service_two --network fake-internet-points [...]