可通过修改 /etc/docker/daemon.json 中的 bip、fixed-cidr、mtu、default-gateway 等字段配置 docker0 网桥参数,重启 docker 后生效,但仅影响默认 bridge 网络且需清理现有容器或网桥才能完全应用。

可以通过修改 Docker 的 daemon.json 文件,在守护进程启动时全局配置容器默认桥接网络(即 docker0 网桥)的参数,比如子网、IP 地址、MTU 等。注意:这些设置只影响默认桥接网络(bridge 驱动且未显式指定网络的容器),不适用于用户自定义桥接网络或其它网络驱动。
配置 docker0 网桥基础参数
在 /etc/docker/daemon.json 中添加 default-address-pools 或直接通过 bip、fixed-cidr 等字段控制默认桥接行为。常用关键字段如下:
-
bip:指定
docker0网桥本身的 IP 地址和子网(如"172.18.0.1/16"),等价于dockerd --bip命令行参数 -
fixed-cidr:限制分配给容器的 IPv4 地址范围(必须是
bip子网的子集,如"172.18.5.0/24") -
mtu:设置
docker0网桥的 MTU 值(如1450),影响容器间及容器与外部通信的分片行为 -
default-gateway:指定容器默认网关(通常应与
bip的网络地址一致,如"172.18.0.1")
示例 daemon.json 配置
以下是一个典型配置,将默认桥接网络设为 172.18.0.0/16,容器 IP 分配限定在 172.18.10.0/24,MTU 设为 1400:
保存后需重启 Docker 守护进程:sudo systemctl restart docker。重启后可通过 ip addr show docker0 和 docker network inspect bridge 验证配置是否生效。
注意事项与常见问题
这些参数仅在 Docker 守护进程首次初始化 docker0 时生效。若已有容器运行或 docker0 已存在,Docker 不会自动重建网桥——需先清理现有容器和网络,或手动删除 docker0(sudo ip link delete docker0),再重启服务。
- 修改
bip后,原有容器可能无法联网,建议在空闲环境或维护窗口操作 -
fixed-cidr不能超出bip所定义的网络范围,否则守护进程启动失败 - 若启用了
userland-proxy: false或自定义 iptables 规则,需同步检查端口映射是否受影响
替代方案:使用自定义桥接网络更灵活
对于生产环境,推荐用 docker network create 创建独立桥接网络并指定参数(如 --subnet、--gateway、--opt com.docker.network.bridge.mtu=1400),然后通过 --network 显式挂载。这种方式不影响默认 bridge,避免全局变更风险,也支持动态调整和多网络隔离。











