Docker默认子网下--ip指定静态IP失效,如何正确配置?
Docker默认bridge网络中--ip参数的正确用法
你的命令不生效的原因:默认的docker0属于Docker内置的默认bridge网络,这个网络不支持通过--ip参数手动指定容器IP,执行时该参数会被忽略,容器仍会自动分配子网内的可用IP(比如你看到的172.17.0.2)。
要在172.17.0.0/16子网内指定静态IP,需要创建自定义bridge网络:
- 先创建同网段的自定义网络:
docker network create --subnet=172.17.0.0/16 my-custom-bridge - 启动容器时使用这个自定义网络并指定IP:
docker run --name "myContainerName" --network my-custom-bridge --ip 172.17.0.124 --rm -it -p 7777:7777 myImage /bin/bash - 进入容器后执行
ifconfig或ip addr,就能看到eth0的IP是指定的172.17.0.124。
- 先创建同网段的自定义网络:
额外说明:
- 自定义bridge网络比默认bridge功能更完善,支持手动指定IP、容器间通过名称直接通信等特性,适合需要静态IP的场景。
- 如果一定要使用默认docker0网络,无法手动指定单个容器的静态IP,只能通过修改Docker配置文件
/etc/docker/daemon.json调整默认子网的IP范围,但容器IP依然是自动分配。
内容的提问来源于stack exchange,提问作者Clément
相关产品推荐
相关产品推荐

