Docker 用户定义的桥接网络上的容器无法通信
Docker containers on user defined bridge networks can't communicate
我在 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
它获得了 IP 172.17.0.2
。在此网络上尝试与之前相同的命令:
docker run --rm -it --net=bridge alpine wget 172.17.0.2
工作得很好!我还尝试 ping 8.8.8.8
,容器似乎也可以正常连接到互联网。
我不认为这是 docker-compose 创建桥接网络的问题,因为如果我手动创建 docker 网络并尝试向其添加容器,我会遇到同样的问题。
如有任何帮助,我们将不胜感激。我也很乐意提供有关主机系统配置的更多信息。
试试官方文档:https://docs.docker.com/compose/compose-file/#network-configuration-reference and here https://docs.docker.com/compose/networking/,你应该阅读 --link 标签
看似微不足道,但我能够通过卸载 docker 并重新安装来解决问题。我的猜测是我最近从 Ubuntu 18.04 升级到 20.10
时出了点问题
我在 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
它获得了 IP 172.17.0.2
。在此网络上尝试与之前相同的命令:
docker run --rm -it --net=bridge alpine wget 172.17.0.2
工作得很好!我还尝试 ping 8.8.8.8
,容器似乎也可以正常连接到互联网。
我不认为这是 docker-compose 创建桥接网络的问题,因为如果我手动创建 docker 网络并尝试向其添加容器,我会遇到同样的问题。
如有任何帮助,我们将不胜感激。我也很乐意提供有关主机系统配置的更多信息。
试试官方文档:https://docs.docker.com/compose/compose-file/#network-configuration-reference and here https://docs.docker.com/compose/networking/,你应该阅读 --link 标签
看似微不足道,但我能够通过卸载 docker 并重新安装来解决问题。我的猜测是我最近从 Ubuntu 18.04 升级到 20.10
时出了点问题