2016-01-13 115 views
2

我有多个运行Docker的主机,我使用Consul作为键值存储。我能够创建覆盖网络,容器可以看到彼此的主机名和IP,当容器被创建/销毁时,/ etc/hosts会很好地更新。但是,位于不同主机上的容器实际上不能互相连接(同一主机上的容器可以)。Docker容器无法通过覆盖网络连接

我已经把调查日志和码头工人守护日志包含这些:

[INFO] serf: EventMemberJoin: vagrant-ubuntu-trusty-64 192.168.57.103 

[ERR] memberlist: Conflicting address for vagrant-ubuntu-trusty-64. Mine: 192.168.57.103:7946 Theirs: 192.168.57.102:7946 

[ERR] serf: Node name conflicts with another node at 192.168.57.102:7946. Names must be unique! (Resolution enabled: true) 

应该泊坞窗守护自己的身份不知何故?看起来Serf感到困惑,因为每个守护进程只是使用主机名作为标识符。

回答

6

答案:集群成员需要具有唯一主机名,因为Docker守护进程是基于主机名(默认情况下)标识的。为什么Docker会将他们的教程留在地球上呢?

+0

您能否请您说明我可以指定主机名的位置。 –

+0

您应该在启动容器('-h'或'--hostname')时设置主机名属性。 –

+0

谢谢你。你保存了一天。 –

3

检查运行docker的机器的主机名。检查主机名在终端上运行。

hostname 

它应该是所有节点都不同。

相关问题