构建 docker 镜像失败,无法获取匿名令牌,TLS 握手超时

iya*_*oui 9 docker

使用docker build -t image_name .. 当我执行它时,我收到错误:

 => [internal] load build definition from Dockerfile                                                               0.1s
 => => transferring dockerfile: 32B                                                                                0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => ERROR [internal] load metadata for docker.io/library/java:8                                                    0.2s
------
 > [internal] load metadata for docker.io/library/java:8:
------
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%3Alibrary%2Fjava%3Apull&service=registry.docker.io: net/http: TLS handshake timeout
Run Code Online (Sandbox Code Playgroud)

ten*_*ive 22

最近在为Earthly/earthly运行构建脚本时发生了这种情况。

操作系统:Arch Linux5.14.8-arch1-1

来自官方存储库的 Docker:Docker version 20.10.8, build 3967b7d28e

解决方案(可能是仅限 Linux 的解决方案)

我的 DNS 配置错误。由于某种原因,docker pull golang:1.16-alpine3.14工作正常,但在运行构建脚本时失败。r/docker 上的这个答案有帮助。

添加 DNS 名称服务器为我/etc/resolv.conf解决了这个问题:

cat /etc/resolv.conf
# Cloudflare
nameserver 1.1.1.1
Run Code Online (Sandbox Code Playgroud)

其他尝试的解决方案

1.禁用Buildkit

这个答案Docker build: failed to fetch oauth token for openjdk? ,这并没有解决问题,因为我相信我正在运行的脚本需要 buildkit:

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0
Run Code Online (Sandbox Code Playgroud)

2. 手动拉取镜像

3. 使用 Docker 进行身份验证

该错误看起来像是在我未通过 hub.docker.com 进行身份验证时可能发生的情况。登录后docker login --username <username>我仍然收到错误。

  • 手动拉取图像对我有帮助。每次都是20秒超时 (2认同)