Podman Rootless下容器访问宿主机服务的底层原理
本地运行容器的朋友应该都碰到过一个很常见的场景:容器内部部署的应用,需要调用我们电脑本机运行的各类服务。比如我平时搭建本地 AI 环境,会把 Open WebUI 部署在容器里,为了方便使用宿主机的GPU(我的是Mac M3),本地模型服务使用Ollama,并部署在宿主机中。一旦容器没法连通宿主机的 11434 端口,整个 AI 对话、模型调用链路就会直接断掉。在实际使用中,通过域名 host.docker.internal 就能快速实现容器与宿主机的互通,简单又好用。
用归用,但我之前一直存有疑问:Podman 默认开启 Rootless 非特权模式,容器、虚拟机、宿主机三层网络是完全隔离的,正常情况下根本不允许跨层级通信。那为什么单单这一个域名,就能打破隔离,打通容器到宿主机回环接口的通信通道?
网上大部分教程,只教大家怎么配置、怎么连通,但少有提及背后的原理。这篇文章将会简单介绍下 Podman Rootless 模式下的宿主机访问原理,同时列出 Mac 和 Windows 平台的差异。




