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

Docker BuildKit构建镜像时DNS解析失败求助

问题:Docker BuildKit构建时DNS解析失败

执行的构建命令

DOCKER_BUILDKIT=1 docker build -f "tools/docker/Dockerfile" -t hello:latest --target hello "."

错误信息

执行FROM ubuntu:impish AS baseimg步骤时触发错误:

ERROR: failed to solve: failed to fetch oauth token: Post "https://auth.docker.io/token": proxyconnect tcp: dial tcp: lookup http on 127.0.0.1:53: no such host

已尝试的无效操作

  • 修改/etc/resolv.conf中的nameserver并重启Docker,错误中的DNS地址会变为设置的IP,但问题依旧
  • 任意DNS服务器执行nslookup auth.docker.io均可正常解析,docker pull操作也正常,仅构建时出错
  • 执行docker logout; docker login操作
  • 开启/关闭代理

环境信息

  • 系统:Ubuntu 22.04
  • Docker版本:Docker version 23.0.5, build bc4487a
  • docker info输出:
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.10.4
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.17.3
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 3
 Server Version: 23.0.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc version: v1.1.5-0-gf19387a
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.19.0-41-generic
 Operating System: Ubuntu 22.04.2 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 12
 Total Memory: 31.15GiB
 Name: Ubuntu-Inspiron-5680
 ID: 56fe649e-4761-4b6d-a258-828187c1f242
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

解决方案建议

  • 指定BuildKit的主机映射:先用nslookup auth.docker.io获取其IP,在构建命令中添加--add-host参数绕过DNS解析:
    DOCKER_BUILDKIT=1 docker build --add-host auth.docker.io:18.169.185.159 -f "tools/docker/Dockerfile" -t hello:latest --target hello "."
    
  • 临时禁用BuildKit:去掉命令中的DOCKER_BUILDKIT=1,使用传统构建方式尝试:
    docker build -f "tools/docker/Dockerfile" -t hello:latest --target hello "."
    
  • 配置Docker daemon全局DNS:创建或编辑/etc/docker/daemon.json,添加公共DNS服务器:
    {
      "dns": ["8.8.8.8", "8.8.4.4"]
    }
    
    保存后重启Docker服务:
    sudo systemctl restart docker
    
  • 重置Buildx构建器:检查当前Buildx配置,创建新的构建器并切换使用:
    docker buildx inspect
    docker buildx create --use
    
  • 清理BuildKit缓存:删除BuildKit的缓存和临时文件,避免缓存干扰:
    docker builder prune -a
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:47:03