守护进程的错误响应:池与此地址空间上的其他池重叠(使用 VPN 时)

守护进程的错误响应:池与此地址空间上的其他池重叠(使用 VPN 时)

在 Ubuntu 中,我尝试在 VPN 上创建具有指定子网的 docker 网络,但出现以下错误:

$ docker network create my-network --subnet 172.17.24.0/18
Error response from daemon: Pool overlaps with other one on this address space

查看路由表:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 cscotun0
0.0.0.0         192.168.0.1     0.0.0.0         UG    20600  0        0 wlp0s20f3
10.174.33.0     0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 cscotun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp0s20f3
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
188.64.152.45   192.168.0.1     255.255.255.255 UGH   0      0        0 wlp0s20f3
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp0s20f3
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 wlp0s20f3

我没有看到我的 VPN(cscotun0)占用了该范围,所以发生了什么事?

除非172.17.24.0/18与 重叠docker0

172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

但我认为两者docker0应该172.17.24.0/18能够存在于同一范围内?

答案1

守护进程的错误响应:网络池与此地址空间上的另一个网络池重叠。

就我而言,我有一个带有硬编码网络 IP 地址的 docker-compose.yaml 文件,并且另一个容器使用同一网络启动。

networks:
    vpn-net:
        ipv4_address: 172.21.0.2

为了解决这个问题,首先找到当前正在使用它的容器:

# docker network ls
NETWORK ID     NAME                DRIVER    SCOPE
ca9b2b29a253   bridge              bridge    local
45e9488d9140   host                host      local
5966656f9981   none                null      local
b3edda2ed475   my-service-net      bridge    local
a9eb7c1f3d20   another-network     bridge    local

# docker inspect my-service-net | grep 172.21.0.2
    "IPv4Address": "172.21.0.2/16"

停止找到的网络的服务:

# docker stop my-service-net

最后,启动失败的新容器。您也可以删除 IP 网络配置或更改 IP。

答案2

但我假设 docker0 和 172.17.24.0/18 应该能够存在于同一范围内?

理论上这是允许的,但这会导致 172.17.0.0/16 网络出现漏洞,其中 172.17.24.0/18 通过,docker0因为最具体的路由获胜。Linux 内核可能会允许您配置这一点,但这不是好的形式,而且它将要由于网络子网重叠,导致有趣的问题。

解决方案是使地址空间不重叠。

相关内容