Docker容器无法通过覆盖网络连接

Mat*_*rga 2 overlay vagrant docker consul

我有多个运行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)
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*rga 6

答案:集群成员需要具有唯一的主机名,因为Docker守护程序是基于主机名识别的(默认情况下).为什么地球上的Docker会从他们的教程中删除它?