You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker network create命令中--subnet与--ip-range参数的区别是什么

Docker网络--subnet与--ip-range配置问题解答

背景说明

在使用docker network create命令创建Docker网络时,有两个核心的网络配置参数,官方定义如下:

  • subnet:CIDR格式的子网,代表一个完整的网络段
  • ip-range:从子网中划分出的、用于给容器自动分配IP的子范围

官方给出的参考配置示例如下:

$ docker network create \
  --driver=bridge \
  --subnet=172.28.0.0/16 \
  --ip-range=172.28.5.0/24 \
  --gateway=172.28.5.254 \
  br0

上述示例中subnet的IP范围为172.28.0.0到172.28.255.255,ip-range的IP范围为172.28.5.0到172.28.5.255。

1、为何要将subnet范围设置得大于ip-range?

这么设计是为了灵活预留IP资源,覆盖不同场景的使用需求:

  • 给固定IP容器预留地址:如果有需要手动指定静态IP的容器,你可以将静态IP规划在subnet范围内、但不在ip-range范围内,完全不用担心和Docker自动分配的IP产生冲突。比如示例中除了172.28.5.0/24用于自动分配外,172.28.0.0/24~172.28.4.0/24、172.28.6.0/24等剩余网段都可以用来配置静态IP。
  • 适配多业务网络划分需求:同一个大的subnet下,可以拆分多个不同的ip-range分配给不同业务组、不同环境(测试/预发/生产)使用,隔离IP分配逻辑,让IP管理更清晰,避免跨业务IP冲突。
  • 降低后续网络扩展成本:如果后续需要和宿主机局域网、其他节点Docker网络做路由打通,提前规划更大的subnet,后续扩展ip-range时不需要重新调整整个网络的子网配置,避免网络重建带来的业务中断。

2、为什么需要同时提供subnet和ip-range两个配置选项?

两个参数的定位和作用完全不同,搭配使用兼顾了网络合法性和IP分配的灵活性:

  • --subnet是网络的基础必备配置:Docker需要通过subnet明确整个网络的网段范围,才能生成对应的路由规则、做IP合法性校验,你配置的网关、容器静态IP、ip-range都必须在subnet范围内才能生效,否则创建网络时会直接报错。
  • --ip-range是可选的IP自动分配规则限制:它的作用是约束Docker自动给容器分配IP的范围,不指定的话Docker默认会从整个subnet内随机分配IP。分开配置可以自由控制自动分配的IP范围,不需要把整个子网都开放给自动分配,避免手动规划的IP被占用。
  • 举个实际场景:如果只有subnet没有ip-range,你要给核心容器配置静态IP,需要自己记录哪些IP未被自动分配,很容易出现冲突;如果只有ip-range没有subnet,Docker无法判断该ip-range所属的网段,无法生成对应的网络路由规则,网络根本无法创建成功。

内容的提问来源于stack exchange,提问作者BertC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:18:04