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!
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
Sie sind richtig! das ist, was es war - fügen Sie es als eine Antwort hinzu, also kann ich Ihnen falsche Internet-Punkte geben! –