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

不能直接修改默认 bridge 网络的子网,必须新建一个自定义 bridge 网络并指定子网范围。这是 Docker 的硬性限制——默认 bridge 不支持静态 IP、不接受 --subnet 参数,也不允许运行时调整网段。
创建带子网的自定义 bridge 网络
使用 docker network create 命令,明确传入 --subnet(必需)和可选的 --gateway:
docker network create --subnet=192.168.100.0/24 --gateway=192.168.100.1 mynet- 子网必须是合法 CIDR 格式,如
172.20.0.0/16、10.10.50.0/24 - 网关地址需落在子网范围内;未指定时 Docker 自动选
X.X.X.1(如192.168.100.1) - 网络名(如
mynet)不能与已有网络重名,可用docker network ls查看
让容器使用这个自定义网段
启动容器时通过 --network 指定网络,并用 --ip 分配固定地址(仅在自定义网络中生效):
docker run -d --network=mynet --ip=192.168.100.10 --name web nginx- 若不指定
--ip,Docker 会从该子网内自动分配一个可用 IP - 已运行的容器可通过先断开再重连方式补设 IP:
docker network disconnect mynet container_name && docker network connect --ip=192.168.100.11 mynet container_name
在 Docker Compose 中统一配置子网
把子网定义写进 docker-compose.yml 的 networks 区块,所有服务自动继承:
- 示例配置:
networks:<br> app-net:<br> driver: bridge<br> ipam:<br> config:<br> - subnet: 172.20.0.0/16<br> gateway: 172.20.0.1
- 各服务可通过
ipv4_address显式指定 IP,如web:下加networks: { app-net: { ipv4_address: 172.20.1.10 } } - 该配置只影响当前 Compose 项目,不会改动宿主机或其他项目网络
验证和排查要点
确认配置是否生效,重点检查三处:
- 运行
docker network inspect mynet,核对Subnet和Gateway字段是否匹配预期 - 进入容器执行
ip a或hostname -I,确认获取到的是自定义网段内的地址 - 若容器无法通信,先确认是否误用了默认
bridge网络——只有自定义网络才支持--subnet和--ip











