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

如何阻止Docker将域名解析为本地地址?

解决方案

以下几种方法可以避免硬编码IP,解决你的容器域名解析问题:

1. 使用Docker自定义网络实现容器间直接通信

这是最推荐的方案,容器间无需依赖外部网络,直接通过自定义网络完成解析通信:

  • 先创建一个自定义Docker网络:
    docker network create acme-internal
    
  • 启动Registry容器时,加入这个网络并设置域名别名:
    docker run -d \
      --name registry \
      --network acme-internal \
      --network-alias registry.acme.com \
      registry:2
    
  • 启动Jenkins容器时,同样加入这个自定义网络:
    docker run -d \
      --name jenkins \
      --network acme-internal \
      # 其他Jenkins启动参数(如端口映射、挂载目录等)
      jenkins/jenkins:lts
    

此时Jenkins容器内访问registry.acme.com会直接解析到Registry容器的内部IP,既解决了解析问题,又提升了镜像推送的传输效率。

2. 为Jenkins容器指定外部DNS服务器

如果必须通过公网IP访问Registry,可以让Jenkins容器使用外部DNS服务器解析域名,绕过宿主机的本地解析:

  • 启动Jenkins时添加DNS参数,比如使用谷歌公共DNS:
    docker run -d \
      --name jenkins \
      --dns 8.8.8.8 \
      --dns 8.8.4.4 \
      # 其他Jenkins启动参数
      jenkins/jenkins:lts
    

这样容器会通过指定的外部DNS解析registry.acme.com,得到正确的公网IP,而非本地的127.0.1.1。

3. 调整宿主机DNS配置(可选)

如果宿主机本身的DNS解析把域名指向了127.0.1.1,可以修改宿主机的/etc/resolv.conf或系统DNS配置,优先使用外部DNS服务器。不过这种方法会影响宿主机上的所有解析,灵活性不如前两种方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:12:27