必须创建自定义bridge网络并指定子网,再通过docker run --network --ip分配静态IP;默认bridge网络不支持静态IP,已有容器可通过network disconnect+connect --ip间接配置。
不能在默认的 bridge 网络上直接配静态 ip,必须创建自定义 bridge 网络,并在启动容器时指定 ip。
创建带子网的自定义网络
这是前提,Docker 默认的 docker0 网桥不支持 --ip 参数。你需要用 docker network create 显式定义子网、网关(可选)和 IP 范围:
docker network create --subnet=192.168.100.0/24 --gateway=192.168.100.1 my-net- 子网必须是 CIDR 格式,如
/24表示可用地址范围是192.168.100.1–192.168.100.254 - 网关地址需落在子网内,且不能与后续分配的容器 IP 冲突
运行容器并绑定固定 IP
启动时通过 --network 和 --ip 一起使用,IP 必须属于刚创建网络的子网范围:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
docker run -d --network my-net --ip 192.168.100.10 --name db redis:7- 如果 IP 不在子网内(比如填成
192.168.99.10),命令会直接报错失败 - 容器重启后该 IP 保持不变,只要它始终连在同一个自定义网络中
已有容器怎么补配静态 IP
不能直接修改正在运行容器的 IP,但可以间接实现:
- 先断开容器当前网络:
docker network disconnect bridge my-container(若连的是默认网桥) - 再连接到你的自定义网络并指定 IP:
docker network connect --ip 192.168.100.20 my-net my-container - 注意:该操作要求容器处于运行状态,且目标网络已存在
验证和常见问题
确认是否生效,推荐用以下方式检查:
-
docker inspect my-container | grep -A 3 "IPv4Address"—— 查看网络部分的 IP 字段 -
docker exec my-container ip -4 addr show eth0—— 进入容器查实际网卡配置 - 如果容器内看不到指定 IP,常见原因是:子网范围写错、IP 被其他容器占用、或误连了默认
bridge网络

















