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

为什么Docker容器无法通过全限定域名调用同一主机上的其他容器

核心问题解答

Docker本身完全支持使用全限定URL调用其他容器,你遇到的报错和全限定URL的格式无关,本质是容器内部无法将你的宿主机域名my-computer.mydomain.net解析到正确的IP地址。

根本原因

容器的网络栈和宿主机是隔离的,DNS解析规则也和宿主机不互通:

  • 你在宿主机浏览器可以正常访问域名,是因为宿主机的hosts配置或内网DNS可以把my-computer.mydomain.net解析到宿主机自身的IP
  • Docker默认给容器分配内置DNS服务(默认地址为127.0.0.11),该服务只会解析Docker网络内部的容器/服务名,公网域名会自动转发到宿主机配置的公网DNS服务器解析
  • 你的my-computer.mydomain.net是本地自定义的开发域名,公网DNS没有对应解析记录,因此容器发起解析请求时直接返回Name or service not known错误
  • 你可以正常访问公网网页,是因为公网域名可以被公网DNS正常解析,和这个场景的逻辑不同

无需Docker Compose的解决方案

如果你希望在容器内继续使用宿主机域名访问,可以选择以下任一方案:

  • 启动容器时增加--add-host参数,自动绑定宿主机域名到Docker网关:
    docker run --add-host my-computer.mydomain.net:host-gateway <你的镜像名称>
    
    其中host-gateway是Docker 20.10及以上版本内置的内置变量,会自动匹配宿主机的Docker网关IP,不需要手动查询填写。
  • 手动修改容器内部的/etc/hosts文件,追加一行记录:<宿主机IP> my-computer.mydomain.net,该方案的缺点是容器重建后配置会失效。
  • 把两个容器加入同一个自定义Docker网络,可直接用容器名作为域名互相调用,不需要走宿主机端口映射,性能和便捷性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:36:04