要在 Docker 容器中实现固定 IP 地址访问,必须创建自定义 bridge 网络(如 mynet)并指定子网,再通过 --network 和 --ip 参数在运行容器时绑定该网络内的静态 IP;默认 bridge 网络不支持静态 IP。

要在 Docker 容器中实现固定 IP 地址访问,核心是**不依赖默认 bridge 网络**,而是创建自定义 bridge 网络并显式分配 IP。默认的 bridge 网络(即 docker0)不支持静态 IP,任何对它的 --ip 尝试都会失败。
创建带子网的自定义网络
这是所有后续操作的前提。Docker 要求静态 IP 必须落在你明确定义的子网范围内,且不能冲突。
- 运行命令创建网络,例如:
docker network create --subnet=192.168.100.0/24 --gateway=192.168.100.1 mynet -
--subnet是必须项,决定了可用 IP 范围;--gateway推荐指定,方便容器访问外网(宿主机需开启 IP 转发) - 网络名(如
mynet)后续启动或连接容器时要用到
启动新容器时绑定固定 IP
在容器创建阶段直接指定,最稳定、最推荐的方式。
- 使用
--network和--ip组合:docker run -d --name db --network mynet --ip 192.168.100.10 -p 5432:5432 postgres - 确保
--ip的值(如192.168.100.10)属于mynet的子网,且未被其他容器占用 - 容器内无需任何额外配置,Docker 自动完成网络注入;可用
docker exec db ip addr show eth0验证
为已有容器补配固定 IP
适用于调试或临时调整,不建议用于生产环境的关键服务。
- 先断开原网络(如果已连接):
docker network disconnect bridge mycontainer - 再连入自定义网络并指定 IP:
docker network connect --ip 192.168.100.20 mynet mycontainer - 注意:该操作会短暂中断容器网络;目标 IP 必须空闲,且
mynet必须已存在 - 重启容器不是必须步骤,但部分应用可能需要重载网络配置
验证与注意事项
配置完成后,别跳过验证环节。
- 查 IP:
docker inspect mycontainer | grep IPAddress或进入容器执行ip a - 测试连通性:从宿主机 ping 该 IP,或从容器内 ping 网关和外部地址(如
ping 192.168.100.1、ping 8.8.8.8) - 记住:容器重启后 IP 保持不变;但若删除重建,需再次指定
--ip,否则不会自动恢复 - 避免使用默认
bridge网络做静态 IP —— 它只支持动态分配,强行指定会报错


















