Ich habe einen Schwarm besteht aus drei Knoten:Docker Schwarm Skalierungsverhalten auf Port-Mapping
$ sudo docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
i12s3zxsn4vu1c98bv3i5idr8 node03 Ready Active
i2ckxvsju4tmommxim3dbfq7l node02 Ready Active
wak4isl46dn7pbo39drrhphju * node01 Ready Active Leader
Dann laufe ich 1 Replik von nginx auf diesem Schwarm und Karte seinen Port 8080:
$ sudo docker service create --replicas 1 --publish 8080:80 --name nginx nginx
$ sudo docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
neahnb9mvi1i nginx replicated 1/1 nginx:latest *:8080->80/tcp
von dort i nginx auf http://node01:8080
Weiter erreichen kann, skalieren ich nginx Instanzen bis 6:
$ sudo docker service scale nginx=6
$ sudo docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
neahnb9mvi1i nginx replicated 6/6 nginx:latest *:8080->80/tcp
Von dort aus kann ich noch nginx auf http://node01:8080 erreichen.
Wenn jedoch ein Docker-Schwarm mehrere Knoten als eindeutigen Host exponiert, wie verwaltet er den Port während einer solchen Skalierung, da alle meine nginx-Dienste auf demselben 8080-Port zugeordnet sind? Gibt es einen Round-Robin-Load-Balancing zwischen allen Service-Instanzen, der intern durch Schwarm erfolgt und die Antwort auf 8080 zurückgibt?