要让 docker engine 启动时使用自定义 bridge 网桥 bridge0,需先手动创建并启用系统级网桥设备(如 ip addr add 192.168.5.1/24 dev bridge0 && ip link set dev bridge0 up),再停止 docker、删除默认 docker0,接着在 /etc/docker/daemon.json 中配置 "bridge": "bridge0",最后重启 docker 并验证 bridge0 状态及容器网络是否生效。
要让 docker engine 启动时就使用你指定的自定义 bridge 网桥(比如 bridge0),不是靠 docker network create,而是得在 docker 守护进程启动前配置底层网桥设备,并修改守护进程配置指向它。
1. 创建并启用系统级网桥设备
这是真正替换默认 docker0 的第一步。Docker 启动时会把容器挂到这个网桥上,所以必须先手动建好:
- 用
brctl创建网桥:sudo brctl addbr bridge0 - 给它分配子网和 IP(作为网关):
sudo ip addr add 192.168.5.1/24 dev bridge0 - 启用该网桥:
sudo ip link set dev bridge0 up - 运行
ip addr show bridge0确认状态为 UP、IP 地址正确
2. 停止 Docker 并清理旧网桥
Docker 运行时会自动创建 docker0,如果它还存在,新配置无法生效:
- 停止服务:
sudo systemctl stop docker - 关闭并删除默认网桥:
sudo ip link set dev docker0 down && sudo brctl delbr docker0
3. 配置 Docker daemon 使用新网桥
编辑或新建 /etc/docker/daemon.json,写入以下内容:
注意:"bridge" 是关键字,值必须是上面创建的网桥名(如 bridge0),不能带斜杠或路径;文件必须是合法 JSON,末尾不能有多余逗号。
4. 启动 Docker 并验证
重启服务后检查是否生效:
sudo systemctl start docker-
ip link show bridge0—— 应看到状态为 UP,且有容器接入时会出现 veth* 接口 -
docker info | grep "Bridge:"—— 输出应为 Bridge: bridge0 - 运行一个容器:
docker run --rm -it alpine ip a,查看 eth0 的网段是否落在你设定的子网内(如192.168.5.0/24)











