直接用 docker network create 指定子网和掩码是最简单可控的方式,关键在于选对 CIDR 段(如避开默认的 172.17.0.0/16,推荐 172.24.0.0/24)、配好网关(如 172.24.0.1),并通过 docker network inspect 验证 subnet 和 gateway 是否生效,避免不带前缀、网关越界或子网冲突等常见错误。
直接用 docker network create 指定子网和掩码,是最简单也最可控的方式——关键不是“能不能”,而是选对 CIDR 段、避开冲突、配好网关。
Docker 默认桥接网络用的是 172.17.0.0/16,所以你自定义时要绕开它。推荐优先考虑:
10.100.0.0/16 或 10.200.0.0/16:避开家庭路由器常用的 10.0.0.0/24、10.1.1.0/24 等段192.168.x.0/24:VMware、VirtualBox、手机热点常占 192.168.56.0/24、192.168.43.0/24,除非你确认该 x 值完全未被宿主机或虚拟网卡使用子网掩码在命令里不单独写,而是通过 CIDR 表示法(如 /24)隐含在 --subnet 参数中:
/24 → 掩码 255.255.255.0 → 可用 IP 约 254 个/22 → 掩码 255.255.252.0 → 可用 IP 约 1022 个(适合中等规模容器集群)/16 → 掩码 255.255.0.0 → 可用 IP 约 65534 个(慎用,易与局域网重叠)例如创建一个带网关的干净网络:
docker network create --subnet=172.24.0.0/24 --gateway=172.24.0.1 mynet
创建后立即检查,避免“以为设了其实没生效”:
docker network inspect mynet
IPAM.Config.Subnet 和 IPAM.Config.Gateway 字段是否匹配你指定的值172.17.0.0/16 或空值,说明命令漏写了 --subnet,需删掉重建:docker network rm mynet
这些坑新手容易踩:
--subnet=172.24.0.0 不带 /24 → 报错或静默失败--subnet=172.24.0.0/24 --gateway=172.24.1.1)→ 创建失败192.168.56.1/24,你还建 192.168.56.0/24)→ 容器可能无法访问外网