必须创建自定义bridge网络并指定子网,再通过docker run --network --ip分配静态ip;默认bridge网络不支持静态ip,已有容器可通过network disconnect+connect --ip间接配置。
bridge 模式本身支持为容器分配独立私有 ip,但默认的 bridge 网络(即 docker0)不支持直接指定 ip,也不允许跨主机复用或精细控制。要实现“独立、安全、私有”的 ip 分配,关键在于**创建自定义 bridge 网络**,而非依赖默认网络。
创建带子网的自定义 bridge 网络
这是分配固定私有 IP 的前提。Docker 要求自定义 bridge 网络必须显式定义子网和网关,避免与宿主机或其他网络冲突。
- 选择未被占用的私有网段:推荐使用
192.168.x.0/24(如192.168.100.0/24),避开默认的172.17.0.0/16和常见局域网段(如办公网 192.168.1.0/24) - 执行命令创建网络:
docker network create --driver bridge --subnet=192.168.100.0/24 --gateway=192.168.100.1 mynet - 该网络自带内建 DNS 和隔离能力,容器间可通过容器名通信,且不暴露给外部网络
启动容器时绑定指定 IP
在自定义网络中,可精确控制每个容器的 IP 地址,确保唯一性与可预测性。
- 启动容器并指定 IP:
docker run -d --name app1 --network mynet --ip 192.168.100.10 nginx:alpine - IP 必须落在
--subnet范围内,且不能是网关地址(如 192.168.100.1) - 若容器已运行,也可后期绑定:
docker network connect --ip 192.168.100.11 mynet app2
保障私有性与安全性
Bridge 模式本身不对外暴露,但需主动规避常见风险点:
- 不使用
-p或--publish显式映射端口,容器就完全不可从宿主机外访问 - 避免将容器连入多个网络(尤其不要同时连
bridge和host),防止网络路径绕过隔离 - 确认 iptables 规则未意外放行:可通过
iptables -L -n -v | grep docker查看 NAT 和 FORWARD 链策略
验证 IP 分配与连通性
分配后需确认 IP 生效且通信受控:
- 检查容器 IP:
docker inspect app1 | jq '.[0].NetworkSettings.Networks.mynet.IPAddress' - 进入容器测试内部连通:
docker exec -it app1 ping -c 3 192.168.100.10(自 ping)、ping app2(名称解析) - 从宿主机 ping 容器 IP 可通(因同属 bridge 网络),但从外部机器 ping 不通——这正是私有安全的表现











