Docker群模式网状路由根本不起作用
我有docker群模式设置与3 ubuntu 16.04机器与vagrant。 我不认为网状布线工作。
如果我build立了一个像这样的服务
docker service create --name helloworld --replicas 1 -p 8888:80 nginx
我可以看到我的服务
docker service ls ID NAME REPLICAS IMAGE COMMAND evbp2spkjn50 helloworld 1/1 nginx
我可以curl到实际的容器运行的机器的ip:
curl 172.28.100.101:8888 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ....
但是如果我去群里的任何其他机器,我的路由不正确:
curl 172.28.100.102:8888 curl: (7) Failed to connect to 172.28.100.102 port 8888: Connection refused
现在,如果我扩展服务,以便像这样的所有机器上运行一个容器:
docker service scale helloworld=3 helloworld scaled to 3
突然之间,我可以curl到它。
curl 172.28.100.102:8888 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ....
这些机器之间的所有端口都是开放的(它们分别设置为vm.network :private_network, :ip => "172.28.100.10X", :netmask => "255.255.0.0"
)。
我已经尝试过一个没有改变的专用networking。
docker --version Docker version 1.12.1, build 23cf638
github上有一个公开的问题 ,可能与你所看到的有关。 我认为还有一些边缘情况下,网格路由不能正常工作,并在1.12的一些我自己的testing中看到了这一点。
我从Ubuntu切换到RancherOS,不良行为消失了。 我猜是有一些关于内核configuration不正确。