用户定义的桥接网络上的 Docker 容器无法通信



我在Ubuntu 20.10机器上使用docker。我想使用docker compose在用户定义的网桥网络上设置一些容器。

我的docker_compose.yml的当前设置如下:

version: "3.5"
services:
webserver:
image: httpd
networks:
default:
ipv4_address: 172.16.0.2
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.0.0/16
gateway: 172.16.0.1
driver_opts:
com.docker.network.bridge.enable_icc: "true"
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.host_binding_ipv4: "0.0.0.0"
com.docker.network.bridge.name: "docker1"

运行docker-compose up运行良好,并使用容器创建网络,如果我尝试从主机与容器交互:

wget 172.16.0.2

它按照我的预期工作。然而,当我尝试将另一个容器添加到网络并尝试连接到它时,即:

docker run --rm -it --net=test1_default alpine wget 172.16.0.2

添加的容器无法连接。同样值得注意的是,网络上也没有任何容器能够访问互联网。

我记得能够在添加到默认网桥网络的容器之间进行良好的交互,所以我创建了一个修改后的docker-compose.yml来测试它:

version: "3.5"
services:
webserver:
image: httpd
network_mode: bridge

它被赋予了IP172.17.0.2。在这个网络上尝试与以前相同的命令:

docker run --rm -it --net=bridge alpine wget 172.17.0.2

工作非常好!我还试着ping8.8.8.8,容器似乎也能很好地连接到互联网。

我不认为这是docker compose创建桥接网络的问题,因为如果我手动创建docker网络并尝试向其中添加容器,我会遇到同样的问题。

如有任何帮助,我们将不胜感激。我很乐意提供更多关于主机系统配置的信息。

看起来微不足道,但我能够通过卸载docker并重新安装来解决这个问题。我的猜测是,在我最近从Ubuntu 18.04升级到20.10 的过程中出现了一些问题

尝试官方文档:https://docs.docker.com/compose/compose-file/#network-配置参考和此处https://docs.docker.com/compose/networking/,你应该读一下——链接标签

最新更新