Docker覆盖了我的默认路由配置

时间:2020-06-03 15:35:05

标签: docker networking raspberry-pi debian armbian

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

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

网络配置:我有一个桥接eth0和wlan0的桥接br0。 (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

容器运行时的表格(外部无互联网连接)

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

该如何解决?这是docker config问题,或者是我的系统问题(armbian)。 谢谢

2 个答案:

答案 0 :(得分:0)

这是因为,如您所见,docker创建了一个名为“ docker0”的linux桥。 您可以更改Docker桥的默认设置来解决此问题。 通过在daemon.json

中提供bip选项和所需的子网来配置默认的桥接网络。
# vi /etc/docker/daemon.json
{
  "bip": "172.200.0.1/16"
}

并重新启动服务。

 systemctl restart docker

更多详细信息HEREHERE

答案 1 :(得分:0)

在ubuntu 20.04上,我尝试了很多方法, 比如阻止dhcpd to update routechange NetworkManager configure to let network-manager to igonre veth* device 以上均无效。

我花了很多时间,发现connman服务改变了默认路由, 更改它的配置文件/etc/connman/main.conf,取消注释以下行

#NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,veth-,vb-

systemctl restart connman

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