无法ping来自同一LAN中的其他主机的docker容器

时间:2017-04-02 09:23:18

标签: linux ubuntu networking docker

我有两个主机,在同一局域网中,都运行docker:

  • 主持人A:172.16.0.113
  • 主持人B:172.16.0.114

我可以从主机B ping主机A.但是,我无法从主机B ping主机A上的docker容器。

我在docker默认网络(网桥)中创建了一个运行ubuntu的docker容器。默认的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

我可以从其主机ping主机A ping;但我无法ping其他主机上的container01,主机B.请注意,我已暴露了container01的端口。

我认为当我从主机B ping container01时,数据包将被发送到该主机中的容器。但我想知道如何从主机B连接到主机A的container01。

2 个答案:

答案 0 :(得分:1)

也许尝试做

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

答案 1 :(得分:1)

Docker容器在通常无法从其他主机访问的专用地址上运行。如果您有多个docker主机,那么您应该设置overlay networking将容器放在可以互相访问的同一个专用网络上;这可以使用swarm mode自动完成。

要从docker外部访问容器,您需要发布端口。使用docker run -p 8080:80选项将主机端口8080映射到容器端口80(您可以调整这些端口号)。使用docker-compose.yml,有一个类似的ports部分。