You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建时如何访问宿主机器上绑定域名的端口资源?

最优解决方案:Docker Build时访问Mac宿主绑定的example.com服务

方案1:自动获取host.docker.internal IP并传入--add-host

针对无法修改宿主服务配置的场景,用脚本自动解析host.docker.internal的IP,避免手动复制的繁琐和不稳定:

用dig解析(推荐,更稳定)

HOST_IP=$(dig +short host.docker.internal)
docker build --add-host example.com:$HOST_IP .

用ping解析(兼容无dig的环境)

HOST_IP=$(ping -c 1 host.docker.internal | awk '/^PING/{print $3}' | sed 's/[()]//g')
docker build --add-host example.com:$HOST_IP .

这个脚本会自动获取宿主在Docker网络中的IP,直接传递给--add-host参数,全程无需手动干预,稳定性比手动ping后复制高很多。

方案2:修改宿主服务监听地址(一劳永逸,优先推荐)

问题根源是宿主服务仅监听127.0.0.1,拒绝外部(包括Docker容器)的接入请求。只要把服务的监听地址改为0.0.0.0(允许所有网卡接入)或者宿主的局域网IP,就能直接利用Docker的host-gateway令牌:

  1. 修改服务配置:

    • 比如Nginx:将listen 127.0.0.1:8888;改为listen 0.0.0.0:8888;
    • 比如Python Flask:启动命令改为app.run(host='0.0.0.0', port=8888)
    • 其他服务同理,找到监听地址配置项修改即可。
  2. 构建时直接使用host-gateway:

docker build --add-host example.com:host-gateway .

这样修改后,不仅构建过程中能正常访问example.com:8888,后续容器运行时也能直接通过该域名访问宿主服务,是最彻底的解决方案。


内容的提问来源于stack exchange,提问作者Robino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:35:28