У меня смешанный кластер Docker Swarm с машинами Linux и машинами Win7. VirtualBox через NAT (мостовой вариант не допускается).
Win7 Win7
| |
(port forwarding on 7946tcp/udp, 2377tcp, 4789udp)
| |
+----+----+ +----+----+ +-------+ +-------+
| VirtBox | | VirtBox | | linux | | linux |
+----+----+ +----+----+ +---+---+ +---+---+
| | | |
+----+---+ +----+---+ +----+---+ +----+---+
| docker | | docker | | docker | | docker |
+----+---+ +----+---+ +----+---+ +----+---+
| | | |
+----+------------+-----------+------------+---+
| docker swarm |
+----------------------------------------------+
Docker swarm инициализирован нормально (согласно диаграмме ниже):
docker@frankie:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
ban0an8sg * Win1 Ready Active Reachable 18.05.0-ce
asdlkj328 Win2 Ready Active Leader 18.05.0-ce
9w05zyye6 Linux1 Ready Active Reachable 18.03.1-ce
slkhj2387 Linux2 Ready Active Reachable 18.03.1-ce
Могу без проблем запускать сервисы в рой:
docker@frankie:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
9w05zyye6 my-web replicated 1/1 nginx:latest *:8083->80/tcp
К сожалению сеть Swarm работает только между машинами Linux. Я могу получить доступ к службе непосредственно на компьютере, на котором она запущена (даже если служба работает в Windows), но сетевая сетка работает только между Linux.
accessible on ► | win1 | win2 | lin1 | lin2
running on ▼ +------+------+------+------
win1 | x | | |
win2 | | x | |
linux1 | | | x | x
linux2 | | | x | x
Есть идеи, где может быть проблема?
редактировать (добавлена команда добавления портов для пояснения):
VBoxManage.exe controlvm "win1" natpf1 "docker-swarm-cluster-management,tcp,0.0.0.0,2377,,2377"
VBoxManage.exe controlvm "win1" natpf1 "docker-swarm-cluster-comm-tcp,tcp,0.0.0.0,7946,,7946"
VBoxManage.exe controlvm "win1" natpf1 "docker-swarm-cluster-comm-udp,udp,0.0.0.0,7946,,7946"
VBoxManage.exe controlvm "win1" natpf1 "docker-swarm-cluster-traffic,udp,0.0.0.0,4789,,4789"