必须创建自定义bridge网络并指定子网,再通过docker run --network --ip分配静态ip;默认bridge网络不支持静态ip,已有容器可通过network disconnect+connect --ip间接配置。

要给 Docker 容器配置自定义网段,核心是创建一个带指定子网的自定义 bridge 网络,而不是修改默认的 bridge 网络——后者不支持静态 IP 或子网定制。
创建带子网的自定义网络
使用 docker network create 命令,并通过 --subnet 明确指定 CIDR 格式的网段(如 192.168.100.0/24)。可选加上 --gateway 指定网关地址(不指定时 Docker 会自动选子网内首个可用地址,如 192.168.100.1):
docker network create --subnet=192.168.100.0/24 --gateway=192.168.100.1 mynet- 子网掩码需合理:/24 提供 254 个可用 IP;/16 可用 IP 更多(约 6.5 万),适合中大型部署
- 避免与宿主机已有网段冲突(比如别用
192.168.1.0/24,如果宿主机本身就在这个网段)
验证网络配置是否生效
创建后立即检查,确认子网和网关已按预期设置:
docker network inspect mynet- 输出中查找
Subnet和Gateway字段,确保值与命令中一致 - 若显示
"Subnet": ""或网关为空,说明创建失败或参数有误(常见原因是子网已被占用或格式错误)
启动容器并绑定该网段内的 IP
只有在自定义网络下,才能用 --ip 参数指定容器 IP。必须确保所填 IP 属于该网络的子网范围且未被占用:
docker run -d --network=mynet --ip=192.168.100.10 nginx- IP 必须在
--subnet范围内(如192.168.100.2–192.168.100.254),不能是网关或网络/广播地址 - 同一子网内多个容器可分别指定不同 IP,实现固定寻址和服务发现
注意事项与常见避坑点
实际配置中容易忽略的关键细节:
- 默认
bridge网络不支持--subnet或--ip,强行使用会报错 - 宿主机上不能存在同网段的物理/虚拟接口(如
192.168.100.0/24已被另一网卡使用,Docker 会拒绝创建) - 容器启动后,可通过
docker exec -it ip addr查看实际分配的 IP,确认是否落在目标网段 - 跨主机通信需额外方案(如
flannel、weave或 Kubernetes CNI),单机自定义网络仅限本机容器间通信











