Fedora 33与Docker环境下无法彻底删除网络网桥的问题排查求助
解决Docker残留网桥重启后重现的问题
你的问题根源很明确:这些残留的br-*网桥之所以删了又回来,是因为Docker daemon的底层网络元数据没有被彻底清理。当你删除网桥但没清理Docker的网络数据库时,重启Docker服务会读取残留的元数据,自动重新创建这些网桥。
为什么常规命令没用?
docker network prune和docker system prune只清理Docker CLI能识别的网络,那些已经从CLI中消失但仍存在于底层数据库的网络,这些命令碰不到。- 直接删除网桥(
ip link del/brctl delbr)只是删除了系统层面的网络设备,但Docker daemon重启后会根据本地存储的网络配置重新生成它们。
彻底解决的步骤
按顺序执行以下操作,确保彻底清理残留数据:
先停止Docker服务(必须先停,否则删了网桥会被daemon立刻重建):
sudo systemctl stop docker备份Docker网络数据(以防万一,出问题可以恢复):
sudo cp -r /var/lib/docker/networks /var/lib/docker/networks_backup清理Docker的底层网络元数据:
Docker的网络配置都存在/var/lib/docker/networks/目录下,删除这里的所有内容(默认的bridge/host/none网络会在Docker重启时自动重建):sudo rm -rf /var/lib/docker/networks/*删除系统中所有残留的
br-*网桥:
用批量命令一次性删除所有残留网桥:for br in $(brctl show | grep br- | awk '{print $1}'); do sudo ip link del $br; done重启Docker服务:
sudo systemctl start docker
验证修复效果
执行完后分别检查:
docker network ls:应该只显示默认的bridge、host、none网络brctl show:应该只有docker0网桥,没有其他br-*设备
这时再尝试创建你的自定义网络:
docker network create --subnet 172.18.128.0/17 si
应该就能正常创建了。
额外注意事项
- 如果你之前用
firewalld给这些网桥配置过规则,可以清理firewalld的残留配置,但根据你的描述,这一步不是必须的。 - 以后删除Docker网络时,尽量用
docker network rm <NETWORK_ID/NAME>,避免强制停止Docker导致元数据残留。
内容的提问来源于stack exchange,提问作者ptschack
相关产品推荐
相关产品推荐

