最常用最稳妥的方式是修改 /etc/docker/daemon.json 中的 bip 字段,如 "bip": "192.168.50.1/24",它同时设定 docker0 网桥 ip、子网范围及容器默认 ip 分配区间,修改后需重启 docker 并验证。

直接改 /etc/docker/daemon.json 文件里的 bip 字段,是最常用也最稳妥的方式。它能一次性定义 docker0 网桥的 IP 地址和子网范围,所有新启动、没指定网络的容器都会从这个网段自动获取 IP。
修改默认网段(bip)
这是最核心的操作。bip(bridge IP)字段决定 docker0 的网关地址和整个子网,比如:
-
"bip": "192.168.50.1/24"→ docker0 接口设为192.168.50.1,容器默认分配192.168.50.2–192.168.50.254的 IP -
"bip": "10.100.0.1/16"→ 子网变大,支持更多容器
注意:bip 必须是合法 CIDR 格式;若与宿主机已有网段冲突(比如宿主机用了 192.168.50.0/24),会导致容器无法通信。
限制容器 IP 分配范围(fixed-cidr)
仅靠 bip 定义了网桥范围,但容器实际能拿到哪些 IP 还可以进一步收紧。用 fixed-cidr 指定一个更小的子集:
- 必须是 bip 子网的子集,例如 bip 是
"172.18.0.1/16",fixed-cidr 可设为"172.18.10.0/24" - 这样容器只会从
172.18.10.2–172.18.10.254中分配地址,便于规划和排查 - 如果超出 bip 范围,Docker 启动会失败
调整 MTU 和默认网关
这两个参数影响网络性能和连通性:
-
mtu:设为比宿主机低的值(如1400),可避免在某些云环境或 Overlay 网络中因分片导致丢包 -
default-gateway:通常和 bip 的网关地址一致(如"172.18.0.1"),确保容器内路由正确;不填时 Docker 会自动推导,但显式写上更可靠
重启并验证配置
保存 daemon.json 后必须重启 Docker 才生效:
- 运行
sudo systemctl restart docker - 检查网桥:执行
ip addr show docker0,确认 IP 和子网已更新 - 检查网络:运行
docker network inspect bridge,核对Subnet、Gateway、IPAM.Config是否匹配配置
如果之前有运行中的容器或已存在的 docker0,Docker 不会自动重建网桥。必要时需先清理容器、删除旧网桥(sudo ip link delete docker0),再重启服务。











