我有多个运行 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)
Docker 守护进程是否应该以某种方式识别自己?看起来 Serf 很困惑,因为每个守护进程只使用主机名作为标识符。