禁用 docker 默认 bridge 网桥的最标准方法是修改 /etc/docker/daemon.json,添加 {"bridge": "none"} 并重启 docker 服务;此后 docker0 不再创建,新容器必须显式指定网络,否则报错。

直接禁用 Docker 默认的 bridge 网桥(即 docker0),核心方法是修改 Docker 守护进程配置,让其启动时不创建该网桥。这不是运行时删除,而是从源头阻止生成。
编辑 /etc/docker/daemon.json 文件,加入 "bridge": "none"
这是最标准、最可靠的方式。Docker 会读取该配置,在初始化网络子系统时跳过 docker0 的创建。
{
"bridge": "none"
}
保存后执行:
sudo systemctl restart docker
验证是否生效:
ip link show docker0 # 应提示 "Cannot find device 'docker0'" docker network ls # 输出中不应出现名为 "bridge" 的网络(除非手动重建)
注意几个关键点:
- 该配置仅影响新启动的 Docker 守护进程,不会自动清理已存在的
docker0设备或正在运行的容器 - 若之前已有容器依赖默认 bridge,重启前需先停止并移除它们,否则
docker network rm bridge会失败 - 启用后,所有新容器必须显式指定网络(如
--network my-net),否则docker run将报错:network bridge not found
补充:如果因兼容性必须保留 docker0,但禁止容器默认接入
可在同一 daemon.json 中配合其他参数实现“软禁用”:
{
"bridge": "none",
"default-address-pools": [
{ "base": "192.168.0.0/16", "size": 24 }
]
}
这样即使 docker0 被手动重建,也不会被自动选为默认网络。
不复杂但容易忽略











