如何将Docker容器连接到自建bridge网桥?配置不生效如何解决?
Docker 20.10及之后的Ubuntu版本默认使用systemd管理服务,/etc/default/docker 配置文件仅适配旧版SysVinit启动模式,现在已经不会被加载,这是你配置不生效的核心原因。可按以下步骤修改配置:
操作步骤
步骤1:先确认自建网桥正常
运行命令验证你创建的bridge0状态正常:ip addr show bridge0
输出需要包含state UP标识,确认网桥本身没有配置问题。
步骤2:修改Docker daemon全局配置
Docker当前版本的所有全局配置都统一放在/etc/docker/daemon.json文件中,如果文件不存在直接新建即可:
- 编辑配置文件:
sudo nano /etc/docker/daemon.json - 写入以下内容:
{ "bridge": "bridge0" }
如果文件中已有其他配置项,只需新增一行"bridge": "bridge0"即可,注意保持JSON格式正确,最后一项配置末尾不要加逗号。
步骤3:重启Docker加载配置
- 先完全停止Docker相关进程:
sudo systemctl stop dockersudo systemctl stop docker.socket - 确认Docker进程完全退出后重启服务:
sudo systemctl start docker
可选执行sudo systemctl enable docker设置Docker开机自启。
步骤4:验证配置生效
- 查看Docker启动参数:
ps aux | grep dockerd
输出中的dockerd进程如果携带--bridge=bridge0参数就说明配置加载成功 - 启动测试容器验证:
docker run --rm -it alpine ip addr show eth0
容器的IP地址和bridge0的子网段保持一致,就说明容器已经成功挂载到自建网桥。
注意事项
- 配置修改前已经创建的容器,需要删除重建后才会使用新的网桥,旧容器默认仍然沿用之前的docker0网桥
- 如果你之前手动修改过docker.service的systemd启动配置,需要先删除自定义的网桥参数,避免和daemon.json的配置冲突
内容的提问来源于stack exchange,提问作者user13493242
相关产品推荐
相关产品推荐

