2016-01-13 75 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 

它應該是所有節點都不同。

相關問題