如何从Docker容器内获取宿主机原生localhost的IP地址?
从Docker容器内部获取宿主机原生localhost IP的方法
当然可以实现啦!不过具体的获取方式会根据宿主机操作系统以及Docker的网络配置略有不同,下面给你整理几种实用的方法:
Linux 环境下
在Linux系统中,Docker默认会将宿主机设为容器的网关,你可以通过这条命令直接获取宿主机在Docker网桥中的IP(对容器来说,这个IP就等价于宿主机的"localhost"):ip route show default | awk '/default/ {print $3}'macOS/Windows 环境下
Docker Desktop针对这两个系统做了特殊适配,你可以直接使用内置的特殊域名host.docker.internal来访问宿主机,它会自动解析到宿主机的localhost IP。如果需要获取具体的IP地址,也可以用以下命令解析:ping host.docker.internal -c 1 | awk '/PING/ {print $3}' | sed 's/[()]//g'自定义网络或特殊场景
如果你的容器使用了自定义网络,或者需要更稳定的传递方式,还可以在启动容器时通过环境变量直接把宿主机IP注入进去:# Linux 环境启动命令 docker run -e HOST_IP=$(ip route show default | awk '/default/ {print $3}') your-image-name # macOS/Windows 环境启动命令 docker run -e HOST_IP=host.docker.internal your-image-name启动后在容器内部直接读取环境变量
$HOST_IP就能拿到宿主机的IP了。
⚠️ 注意:容器内部的localhost是容器自身的回环地址,和宿主机的localhost完全不是一回事,所以不能直接用容器里的localhost访问宿主机上的服务哦。
内容的提问来源于stack exchange,提问作者user2323240
相关产品推荐
相关产品推荐

