Ubuntu 20.04 和 Docker 19.03.8 - Docker 删除默认网关并中断主机连接

Ubuntu 20.04 和 Docker 19.03.8 - Docker 删除默认网关并中断主机连接

我使用静态 IP 运行 ubuntu 20.04。首次启动时,没有遇到任何问题,路由看起来不错:

# ping 4.2.2.2
PING 4.2.2.2 (4.2.2.2) 56(84) bytes of data.
64 bytes from 4.2.2.2: icmp_seq=1 ttl=55 time=15.1 ms
64 bytes from 4.2.2.2: icmp_seq=2 ttl=55 time=13.2 ms
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 enp7s0
169.254.0.0     0.0.0.0         255.255.0.0     U     268    0        0 veth72d13a6
169.254.0.0     0.0.0.0         255.255.0.0     U     270    0        0 veth4282136
169.254.0.0     0.0.0.0         255.255.0.0     U     272    0        0 veth231344a
169.254.0.0     0.0.0.0         255.255.0.0     U     274    0        0 veth311ab6b
169.254.0.0     0.0.0.0         255.255.0.0     U     276    0        0 vethce07e31
169.254.0.0     0.0.0.0         255.255.0.0     U     278    0        0 veth634311f
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp7s0

然而,一旦我启动docker,路由就会被修改,我的默认网关也会被删除!

# 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     202    0        0 enp7s0
169.254.0.0     0.0.0.0         255.255.0.0     U     202    0        0 enp7s0
169.254.0.0     0.0.0.0         255.255.0.0     U     203    0        0 docker0
169.254.0.0     0.0.0.0         255.255.0.0     U     204    0        0 br-eaab0b58fedb
169.254.0.0     0.0.0.0         255.255.0.0     U     205    0        0 br-1c9dab29e4e2
169.254.0.0     0.0.0.0         255.255.0.0     U     206    0        0 br-22995aab5a8d
169.254.0.0     0.0.0.0         255.255.0.0     U     280    0        0 veth5abaa22
169.254.0.0     0.0.0.0         255.255.0.0     U     282    0        0 veth20fab69
169.254.0.0     0.0.0.0         255.255.0.0     U     284    0        0 veth45e9cab
169.254.0.0     0.0.0.0         255.255.0.0     U     286    0        0 vethab5951b
169.254.0.0     0.0.0.0         255.255.0.0     U     288    0        0 vethb6baf34
169.254.0.0     0.0.0.0         255.255.0.0     U     290    0        0 veth59c9ab9
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-ea0d0b58fedb
172.21.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-229956aa5a8d
172.28.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-1c938d29e4e2
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp7s0
# ping 4.2.2.2
PING 4.2.2.2 (4.2.2.2) 56(84) bytes of data.
^C
--- 4.2.2.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1016ms

为了解决这个问题,我可以执行 netplan apply,但由于没有路由到容器,这会破坏 docker。我决定再次手动添加默认网关,但这是一个手动任务,不应该是必要的。

有什么想法吗?

答案1

我在使用 Ubuntu 20.04 LTS 和 Docker 18.09.2 时遇到了同样的问题。route -n出现了同样的症状。sudo netplan apply会暂时恢复。我能够通过创建/etc/docker/daemon.json默认网关集来修复它。

{
    "debug": true,
    "default-gateway": "192.168.1.1"
}

再次启动 docker 后,网关地址似乎仍然存在并且route -n看起来仍然良好。

相关内容