Docker Swarm – networking覆盖不能连接所有容器
我目前有3个EC2实例设置了Docker Swarm和Consul。 我有3个简单的节点应用程序遍布所有3个实例,然后nginx在我的swarm主机上进行路由。
使用覆盖networking指南,我创build了一个名为mynet
的新覆盖mynet
并将每个容器连接到此networking。 使用docker inspect
我可以确认每个节点容器和nginx容器都连接到mynet
并具有IP。 但是,在对我的nginx容器进行切换之后,它只能通过networking与位于同一主机上的节点应用程序通信,而不能与集群中其他主机上的节点应用程序进行通信。
在运行docker network inspect mynet
,只列出了两个容器(同一主机上的nginx和一个节点实例),而另外两个容器没有列出,即使它们具有该覆盖networking的名称和IP从docker inspect
。
这个想法是使用一个nginx反向代理来添加任何联机到它的configuration的新的容器,但我坚持让容器所有连接。 根据Dockernetworking文档覆盖这应该是可能的。
我究竟做错了什么? 谢谢。
编辑:
在发送垃圾邮件之后, docker network inspect mynet
几次docker network inspect mynet
,看起来容器不断地与networking连接和断开连接,即使我已closures了所有的防火墙并打开了用于testing目的的端口。 什么会导致这样的事情?
原来有两个问题是我的问题。
一个是我使用的是docker network overlay
不支持的Kernel 3.13。 升级到3.16解决了这个问题。 其次,Swarm 1.0.1中存在一个错误,可以正确聚合networking信息。 这里已经修好了,但截至撰写时尚未公布。