我有docker swarm模式设置3个带有vagrant的ubuntu 16.04机器。我认为网状路由根本不起作用。
如果我设置了像
这样的服务 docker service create --name helloworld --replicas 1 -p 8888:80 nginx
我可以通过
查看我的服务docker service ls
ID NAME REPLICAS IMAGE COMMAND
evbp2spkjn50 helloworld 1/1 nginx
我可以卷曲到运行实际容器的机器的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 172.28.100.102:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
....
所有端口都在这些计算机之间打开(它们在vagrant中设置为vm.network :private_network, :ip => "172.28.100.10X", :netmask => "255.255.0.0"
)。
我尝试使用专用网络,但没有任何变化。
docker --version
Docker version 1.12.1, build 23cf638
答案 0 :(得分:1)
open issue on github可能与您所看到的内容有关。我认为仍有一些边缘情况,网格路由不能正常工作,并且在我自己的1.12测试中已经看到了这一点。
答案 1 :(得分:0)
我从Ubuntu切换到RancherOS,不良行为消失了。我猜测内核配置有些不对劲。