Docker for Mac如何强制使用固定静态IP?
解决Docker for Mac动态IP变更的问题
嘿,我太懂这种频繁改IP的糟心感了——之前用Docker Toolbox的时候,虚拟机IP还相对稳定,换成Docker for Mac后,这种动态跳IP的情况确实能把人折腾疯,尤其是你还把一堆配置都绑在IP上。下面给你几个实用的解决办法,按优先级推荐:
优先推荐:用内置域名替代IP(零配置)
Docker for Mac专门做了适配,默认提供了host.docker.internal这个特殊域名,它会自动解析到Docker宿主机(也就是你的Mac)的真实IP,不管IP怎么变都能正常工作:
- 数据库连接:把之前的
192.168.0.198:3306改成host.docker.internal:3306,再也不用管IP变更 - SSH连接:直接用
ssh your-user@host.docker.internal(前提是你已经映射了SSH端口) - 主机配置:所有指向Docker IP的地方,全换成这个域名就行,一劳永逸
如果你必须用固定IP:创建自定义Docker网络
要是某些场景硬要指定IP(比如老系统只认IP),可以自己创建一个带固定子网的Docker网络,给容器分配静态IP:
- 先创建自定义桥接网络,指定子网和网关:
docker network create --subnet=192.168.100.0/24 --gateway=192.168.100.1 my-static-network - 启动容器时,指定这个网络并分配固定IP:
这样这个容器的IP就永远是docker run -d --name my-app-container --network my-static-network --ip 192.168.100.15 your-image192.168.100.15,不会随便变动 - 让Mac本地能访问这个IP:需要加一条路由规则(Docker for Mac的自定义网络默认隔离)
这里的sudo route -n add 192.168.100.0/24 192.168.65.1192.168.65.1是Docker for Mac默认的宿主机网关,你可以用ifconfig | grep -A 5 bridge100命令确认这个地址
进阶方案:固定Docker虚拟机的IP(谨慎使用)
Docker for Mac用HyperKit虚拟机替代了VirtualBox,默认是动态获取IP的。你可以修改它的配置文件来固定IP,但要注意Docker更新可能会重置这个配置:
- 先彻底关闭Docker Desktop:
osascript -e 'quit app "Docker Desktop"' - 找到HyperKit的配置文件,路径一般是
~/Library/Containers/com.docker.docker/Data/vms/0/config.json - 编辑文件,找到
Ipv4节点,把Dynamic改成false,并指定你想要的固定IP、子网和网关:"Ipv4": { "Address": "192.168.0.198", "Netmask": "255.255.255.0", "Gateway": "192.168.0.1", "Dynamic": false } - 重新启动Docker Desktop,虚拟机的IP就固定下来了
内容的提问来源于stack exchange,提问作者Marcin Nabiałek
相关产品推荐
相关产品推荐

