Docker生成与本地网络重叠的路由,如何阻止该类路由创建?
解决Docker启动后生成与本地网络重叠路由的问题
一、修改Docker配置,指定不冲突的子网范围
Docker默认会自动挑选子网,要是和本地网段撞了,直接手动指定不重叠的网段就行:
- 编辑(不存在就新建)Docker的配置文件
/etc/docker/daemon.json:
{ "default-address-pools": [ {"base": "172.31.0.0/16", "size": 24} ] }
这里选了172.31.0.0/16这个一般不会和本地冲突的网段,size设置每个子网用24位掩码。你也可以换成其他网段,比如10.244.0.0/16,只要不和本地现有网段重叠就行。
如果想精确控制默认的docker0网桥,也可以加上bip参数:
{ "bip": "172.31.0.1/24", "default-address-pools": [ {"base": "172.32.0.0/16", "size": 24} ] }
bip专门指定docker0网桥的子网地址default-address-pools定义Docker创建自定义网桥时用的地址池
- 保存文件后重启Docker服务:
sudo systemctl restart docker
二、清理已有的冲突网桥
之前生成的冲突网桥(比如你这里的br-0a4abef1c7bb)得删掉,别用brctl,直接用Docker命令更安全:
- 先停掉所有用这个网桥的容器:
docker stop $(docker ps -q --filter "network=br-0a4abef1c7bb")
- 删除对应的Docker网络:
docker network rm br-0a4abef1c7bb
三、验证配置是否生效
重启Docker后,查一下路由表:
ip route
这时候Docker生成的子网应该都在你指定的地址池里,不会再和本地网络重叠了。
内容的提问来源于stack exchange,提问作者Alex Flint
相关产品推荐
相关产品推荐

