2017-04-02 54 views
0

我有兩臺主機,在同一個局域網,無論是運行碼頭工人無法ping通碼頭工人容器:可以從另一臺主機是在同一個局域網

  • 主機A:172.16.0.113
  • 主機B:172.16 .0.114

我可以從主機B ping主機A,但,我不能從主機B ping通主機A泊塢窗容器

我創建了一個碼頭工人容器運行Ubuntu,在泊塢窗默認網絡(布里德GE)。默認的docker0的IP地址是172.17.0.1。而主機(172.16.0.113)中的容器(ubuntu)的IP地址爲172.17.0.2。我使用的命令是這裏:

sudo docker run --name container01 -it -p 8080:80 ubuntu /bin/bash 

我可以從它的主機,主機A ping容器01;但是我無法從其他主機host B ping到container01。請注意,我公開了container01的端口。

我想當我從主機B ping container01時,數據包被髮送到該主機中的容器。但我想知道如何連接到主機,從主機B. A的container01

+0

請記住,['ping'](https://en.wikipedia.org/wiki/Ping_(networking_utility))不適用於[ports](https://en.wikipedia.org/wiki/Port_ (computer_networking)),因此公開端口8080不會影響您是否可以ping另一個容器。 –

+0

非常感謝。 – LYY

回答

1

也許嘗試做在正常情況下不與其他主機訪問私有地址上運行

sudo docker run --name container01 -it --network=host -p 8080:80 ubuntu /bin/bash

1

Docker容器。如果您有多個docker主機,那麼您應該設置overlay networking將容器放置在可以彼此訪問的相同專用網絡上;這可以使用swarm mode自動完成。

對於從Docker外部到達容器,您需要發佈一個端口。使用docker run-p 8080:80選項可將主機端口8080映射到容器端口80(您可以調整這些端口號)。使用docker-compose.yml,有一個類似的ports部分。

+0

我在主機A和B上使用了羣集模式。我創建了一個名爲my-multi-host-network的覆蓋網絡。命令是:sudo docker service create --name my_web --network my-multi-host-network --publish 8008:80 --replicas 10 nginx然後它在主機A和B上創建了10個nginx容器。my_web的IP地址.1是172.16.1.3。當我ping 172.16.1.3時,我仍然無法連接主機A上的容器my_web.1和主機B.那麼主機B可以訪問主機A上的容器嗎? – LYY

+0

集裝箱可以使用覆蓋網絡,集裝箱到集裝箱到達彼此。你不能直接在容器ip上從外部主機到容器。而是使用主機上發佈的端口訪問它。 8008,在任一主機上循環路由到其中一個容器。 – BMitch

+0

因此,如果我不使用ping命令來測試連接,應該使用什麼命令來測試主機A上的容器與主機B之間的連接性? – LYY

相關問題