首页/云/Docker 容器速查/自定义网络内指定静态 IP
网络与存储52 条

自定义网络内指定静态 IP

在划分了子网的网络内给容器指定固定地址:--ip 需落在网络子网内且未被占用,仅用户自定义网络支持。

Docker 容器速查云更新于 2026-10-13

给容器指定固定地址

在创建时就声明了子网的网络里,可以用 --ip 给容器指定一个固定地址。两个前提:网络创建时写了 --subnet,指定的地址落在该子网内且没有被占用。默认 bridge 网络不支持这个参数,只有用户自定义网络可以。要留意的是静态地址只在容器接入期间有效,容器删除重建后需要再次指定,依赖固定地址的配置因此比较脆。

基本信息

前提条件网络创建时已声明 --subnet
语法--network 网络名 --ip 地址
限制默认 bridge 不支持,仅用户自定义网络可用
持续性容器重建后需重新指定

典型使用场景

  • 联调对接:对端系统只认固定地址,临时指定便于打通链路
  • 迁移过渡:从虚拟机迁到容器时沿用原地址,减少对端改配置
  • 白名单管理:上游按 IP 放行,固定地址后不必频繁调整规则
  • 多网段规划:按业务划分不同子网,把关键服务放到固定地址上
  • 排障复现:需要与故障现场完全一致的地址条件

指定与核对

指定与核对
# 创建带子网的网络
docker network create --subnet 172.30.0.0/24 app-net

# 用固定地址启动容器
docker run -d --network app-net --ip 172.30.0.10 --name db postgres:16-alpine

# 核对容器地址与占用情况
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db
docker network inspect app-net --format '{{range .Containers}}{{.Name}} {{.IPv4Address}} {{end}}'

地址分配方式对照

方式稳定性适用场景
自动分配重建后可能变化常规业务容器
--ip 静态指定重建后需重新指定依赖固定地址的联调与迁移
按名称解析与地址解耦服务之间的互相调用
macvlan 独立地址物理网段内固定需要与局域网设备同网段
静态地址只在容器接入期间有效,容器删除重建时要重新指定,编排文件里写死的地址在缩放场景下会直接冲突。
依赖固定地址的配置在容器重建后容易断链,能用名称解析的调用关系就不要写 IP。

易错点

  • 在默认 bridge 上指定 --ip:参数不被支持,启动即报错,换成自定义网络
  • 地址落在子网之外:启动失败或行为异常,先在网络 inspect 里核对网段与网关
  • 写死地址又做扩容:多副本会争抢同一地址,需要固定地址的服务保持单实例
  • 把静态地址当成长期方案:重建后仍要重新指定,编排环境优先用服务名解析

数据来源与参考

  • Docker 官方文档:network connect 的 --ip 与用户自定义网络(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌