最可靠方式是直接指定子网范围,需避开宿主机已用网段及Docker默认的172.17.0.0/16;推荐选用172.20.0.0/16至172.31.0.0/16中未占用的/24或/22子网,并显式设置--subnet与--gateway。

直接指定子网范围是最可靠的方式,关键在于避开宿主机已用网段和常见私有地址冲突区。
查清宿主机当前使用的网段
运行以下命令,查看本机所有活跃网卡的 IP 和子网:
-
Linux/macOS:
ip route或ifconfig,重点关注eth0、wlan0、en0等主接口的 CIDR(如192.168.1.0/24、10.0.2.0/24) -
Windows:
ipconfig,注意 IPv4 地址及子网掩码,换算成 CIDR 格式(例如192.168.56.1+255.255.255.0→192.168.56.0/24) - 同时检查 Docker 默认网桥:
docker network inspect bridge | grep Subnet,通常为172.17.0.0/16,避免重复使用整个172.17.x.x段
选一个安全、未被占用的私有子网
优先从以下三类 RFC1918 地址中挑选,并跳过常见冲突段:
-
推荐首选:
172.20.0.0/16~172.31.0.0/16(共 16 个 /16 段),Docker 默认只用172.17.0.0/16,其余基本空闲 -
次选:
10.100.0.0/16或10.200.0.0/16——避开家庭路由常用10.0.0.0/8中的前缀(如10.0.0.0/24、10.1.1.0/24) -
慎用:
192.168.x.0/24段——极易与物理局域网、VMware/VirtualBox 虚拟网卡(如192.168.56.0/24)、Wi-Fi 热点(192.168.43.0/24)冲突,除非你确认该x值完全未被使用
创建时显式指定子网和网关
不要依赖默认分配,用 --subnet 和 --gateway 锁定范围:
- 基础示例(安全常用):
docker network create --subnet=172.24.0.0/24 --gateway=172.24.0.1 mynet - 若需更大容量(如 >250 容器):
docker network create --subnet=172.24.0.0/22 --gateway=172.24.0.1 mynet(提供 1022 个可用 IP) - 验证是否生效:
docker network inspect mynet | grep -A 5 IPAM,确认输出中Subnet和Gateway与预期一致
额外建议:预留未来扩展空间
如果计划建多个自定义网桥,提前规划连续子网,便于统一管理:
- 例如统一分配
172.24.0.0/16整个段,再切分为多个 /24:
→mynet-a:172.24.10.0/24
→mynet-b:172.24.20.0/24
→mynet-c:172.24.30.0/24 - 这样既避免交叉重叠,也方便后期用
iptables或网络策略统一管控


















