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

Windows10下Docker build拉取rocker/r-base镜像DNS解析失败求助

Docker Build在Windows 10 WSL环境下失败的解决方案

在Windows 10启用WSL的Docker Desktop(Docker Engine v20.10.17)中执行docker build构建镜像失败,但该镜像可在Debian 11正常构建,核心报错为无法解析auth.docker.io域名,具体报错信息如下:

docker build -t <image-name> .
[+] Building 2.3s (3/3) FINISHED
 => [internal] load build definition from Dockerfile                                0.1s
 => => transferring dockerfile: 32B                                                 0.0s
 => [internal] load .dockerignore                                                   0.1s
 => => transferring context: 2                                                      0.0s
 => ERROR [internal] load metadata for docker.io/rocker/r-base:4.2.1                2.0s
------                                                                                                                                                                    
> [internal] load metadata for docker.io/rocker/r-base:4.2.1:                                                                                                            ------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize:
rpc error: code = Unknown desc = failed to fetch anonymous token: Get
"https://auth.docker.io/token?scope=repository%3Arocker%2Fr-base%3Apull&service=registry.docker.io":
dial tcp: lookup auth.docker.io: no such host

针对性解决方案

1. 修复WSL内部DNS解析

  • 进入WSL终端,编辑DNS配置文件:
    sudo nano /etc/resolv.conf
    
  • 将默认DNS替换为公共DNS(如Google 8.8.8.8或Cloudflare 1.1.1.1),修改后内容如下:
    nameserver 8.8.8.8
    
  • 保存退出后,测试域名解析是否正常:
    nslookup auth.docker.io
    
    若能返回正常IP,重新执行docker build。

2. 为Docker Engine配置自定义DNS

  • 打开Docker Desktop,进入Settings > Docker Engine
  • 在配置JSON中添加dns字段,示例如下:
    {
      "dns": ["8.8.8.8", "1.1.1.1"]
    }
    
  • 点击Apply & Restart重启Docker服务,再尝试构建镜像。

3. 重置WSL与Windows网络栈

  • 以管理员权限打开Windows命令提示符,依次执行:
    wsl --shutdown
    netsh winsock reset
    netsh int ip reset all
    netsh winhttp reset proxy
    ipconfig /flushdns
    
  • 重启WSL和Docker Desktop后,重新运行构建命令。

4. 验证WSL版本与Docker集成状态

  • 检查WSL版本,确保使用WSL 2:
    wsl -l -v
    
  • 若为WSL 1,升级至WSL 2(替换<distro-name>为你的WSL发行版名称,如Ubuntu):
    wsl --set-version <distro-name> 2
    
  • 确认Docker Desktop的WSL集成已开启:进入Settings > Resources > WSL Integration,确保对应发行版的集成开关处于打开状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:50:25