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 version 18.06.1-ce, build e68fc7a

更新:

仍然沒有好的結果(我不知道是否缺少配置)

碼頭工人版本: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

為所有子網路保留此選項可以使網路可存取。

相關內容