Docker:子网客户端无法 ping 其他子网

Docker:子网客户端无法 ping 其他子网

我已经创建了一个有 2 个客户端和 2 个路由器的小型网络,其功能如下Dockerfile

FROM ubuntu:18.04

RUN apt update && apt upgrade -y && apt install -y vim iputils-ping iproute2

容器是使用以下脚本创建的:

#!/bin/bash

sudo docker build -t test02 .

sudo docker network create --internal --subnet=192.168.1.0/24 tunnel

sudo docker network create --internal --subnet=172.16.1.0/24 B1
sudo docker network create --internal --subnet=172.16.2.0/24 B2

sudo docker run --name R1 --hostname R1 --cap-add=ALL --net tunnel --ip="192.168.1.100" -dit test02

sudo docker run --name R2 --hostname R2 --cap-add=ALL --net tunnel --ip="192.168.1.200" -dit test02

sudo docker network connect --ip="172.16.1.254" B1 R1
sudo docker network connect --ip="172.16.2.254" B2 R2

sudo docker exec R1 ip route del default via 172.16.1.1

sudo docker exec R2 ip route del default via 172.16.2.1

sudo docker exec R1 ip route add 172.16.2.0/24 via 192.168.1.200

sudo docker exec R2 ip route add 172.16.1.0/24 via 192.168.1.100

sudo docker run --name PC1 --hostname PC1 --cap-add=ALL --net B1 --ip="172.16.1.2" -dit test02

sudo docker run --name PC2 --hostname PC2 --cap-add=ALL --net B2 --ip="172.16.2.2" -dit test02

sudo docker exec PC1 ip route del default via 172.16.1.1

sudo docker exec PC1 ip route add default via 172.16.1.254

sudo docker exec PC2 ip route del default via 172.16.2.1

sudo docker exec PC2 ip route add default via 172.16.2.254

一切正常,但PC1无法 ping 通PC2。这在 中不是问题lxc,在 中执行相同的网络配置,PC1并且PC2可以通信。

为什么会发生这种情况?

Docker 版本:Docker version 18.06.1-ce, build e68fc7a

更新:

仍然没有得到好的结果(我不知道是否有我遗漏的配置)

Docker 版本:Docker version 18.09.0, build 4d60db4

答案1

此命令:

sudo docker network create --internal --subnet=192.168.1.0/24 tunnel

创建无法与其他网络通信的桥接器(man docker-network-create):

   --internal[=false]
       Restrict external access to the network

将此选项保留给所有子网,可使网络可访问。

相关内容