linux - 同一网络中的 Docker 容器无法相互通信

标签 linux docker centos docker-network

我是第一次在 Centos 中使用 Docker。

在部署两个容器时,我发现我遇到了互联网路由问题,然后我发现我什至无法让它们相互通信(尽管位于默认的bridge网络上)。

在一个容器中会发生这种情况:

/ # ip a | grep 172
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
/ # ping 172.17.0.3
PING 172.17.0.3 (172.2.0.3): 56 data bytes
^C
--- 172.17.0.3 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss

在另一个中,相同的行为:

/ # ip a | grep 172
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
/ # ping 172.17.0.2
PING 172.17.0.2 (172.2.0.2): 56 data bytes
^C
--- 172.2.0.2 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss

并且它们位于同一网络中:

$ docker inspect 91767dd3adfa | grep -i networkid
                    "NetworkID": "d36d28507f9cc3f6c40437330af3778c117d303e106de0b3b43ad7919d2791c7",
$ docker inspect a393490d8d02 | grep -i networkid
                    "NetworkID": "d36d28507f9cc3f6c40437330af3778c117d303e106de0b3b43ad7919d2791c7",
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
d36d28507f9c        bridge              bridge              local
f32f4c8d6187        host                host                local
5693790b1713        none                null                local

为什么会发生这种情况?我在 Ubuntu 和 MacOS 中使用过 Docker,它可以无缝运行。

最佳答案

我在这里看到的是,这完全是你的错误,机器的IP在网络172.17.0.0/16中 但您尝试 ping 位于 172.2.0.0/16 的计算机,因此它将无法工作,因为具有此网络的计算机超出了范围,而且现有计算机的 IP 不是您向其发送 ping 请求的 IP。

关于linux - 同一网络中的 Docker 容器无法相互通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59778892/

相关文章:

java - 为什么 jar 不能在命令行下运行?

docker - 使用 docker stack 时挂载 tmpfs

docker - 升级 docker 后丢失所有 docker 容器和镜像

node.js - Bcrypt 安装在 Docker 中失败

Apache webserver - 为子域设置 dns

linux - 删除配置文件中提到的文件以外的所有文件

linux - 为什么我需要在系统调用读取之前调用系统调用写入以使其接受用户输入?

php - 如何在 AWS Linux/CentOS 上使用 Yum 更新 PHP 版本

linux - double 和 single bigger than linux 终端有什么区别

linux - 如何在/usr 目录中找到最长的头文件(.h)