Docker 正在覆盖我的默认路由配置

use*_*184 4 networking debian raspberry-pi docker armbian

这里是一个菜鸟,从 Orange Pi 3(Rasberry Pi 克隆)中的 docker 开始。

我正在尝试配置并启动 docker 容器 (bitwarden_rs),但是当我这样做时,我失去了与外部网络的连接。Docker 弄乱了我的路由表。

网络配置:我有一个网桥br0,桥接eth0和wlan0。(eth0连接路由器,wlan0配置为AP模式)

容器停止时的表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    425    0        0 br0  <---OK
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 br0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     425    0        0 br0
192.168.2.0     0.0.0.0         255.255.255.0   U     425    0        0 br0
Run Code Online (Sandbox Code Playgroud)

容器运行时的表(外部无法访问互联网)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     205    0        0 docker0 <---NOT OK
default         _gateway        0.0.0.0         UG    425    0        0 br0
link-local      0.0.0.0         255.255.0.0     U     205    0        0 docker0
link-local      0.0.0.0         255.255.0.0     U     230    0        0 vethed140ce
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 br0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     425    0        0 br0
192.168.2.0     0.0.0.0         255.255.255.0   U     425    0        0 br0
Run Code Online (Sandbox Code Playgroud)

我能做什么来修复它?这是 docker 配置问题或者可能是我的系统问题(armbian)。谢谢

tru*_*liu 9

在ubuntu 20.04上,我尝试了很多方法,例如阻止dhcpd更新路由更改NetworkManager配置以让网络管理器忽略veth *设备 以上都不起作用。

我花了很多时间发现connman服务改变了默认路由。通过取消注释以下行来更改其配置文件 /etc/connman/main.conf:

#NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,veth-,vb-
Run Code Online (Sandbox Code Playgroud)

systemctl restart connman
Run Code Online (Sandbox Code Playgroud)

重新启动 connman 服务。问题最终得到解决。