Docker容器不能通过覆盖networking连接

我有多个运行Docker的主机,我使用Consul作为关键值存储。 我能够创build覆盖networking,容器可以看到对方的主机名和IP,当容器被创build/销毁时,/ 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) 

Docker守护进程是否应该以某种方式标识自己? 看起来Serf是困惑的,因为每个守护进程只是使用主机名作为标识符。

答案:集群成员需要具有唯一主机名,因为Docker守护进程是基于主机名(默认情况下)标识的。 Docker为什么在他们的教程中离开了这一点?

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

 hostname 

所有节点应该是不同的。