错误:无法解决:openjdk:13:无法执行请求:头“https://registry-1.docker.io/v2/library/openjdk/manifests/13”:x509

meg*_*sat 5 java linux docker dockerfile docker-compose

我正在尝试为我的 M1 max MacBook 上的 java 文件构建一个 docker 映像,我的 dockerfile:

FROM openjdk:13
COPY . /src/java
WORKDIR /src/java
RUN ["javac","greenchallenge.java"]
ENTRYPOINT ["java","greenchallenge"]
Run Code Online (Sandbox Code Playgroud)

构建镜像的步骤如下:

  1. 使用以下命令创建了一个新的构建器:(docker buildx create --name pibuilder想使用多架构功能
  2. 使用以下方式初始化构建器:docker buildx use pibuilder
  3. 构建图像并使用以下命令推送它:
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t my_java:latest -t my_java:1.0.0 --push .

Run Code Online (Sandbox Code Playgroud)

运行步骤 3后,我得到以下日志:

[+] Building 19.7s (6/6) FINISHED                                               
 => [internal] booting buildkit                                           18.6s
 => => pulling image moby/buildkit:buildx-stable-1                        18.1s
 => => creating container buildx_buildkit_pibuilder0                       0.6s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => [internal] load build definition from dockerfile                       0.0s
 => => transferring dockerfile: 493B                                       0.0s
 => ERROR [linux/arm64 internal] load metadata for docker.io/library/open  1.0s
 => CANCELED [linux/arm/v7 internal] load metadata for docker.io/library/  1.0s
 => ERROR [linux/amd64 internal] load metadata for docker.io/library/open  1.0s
------
 > [linux/arm64 internal] load metadata for docker.io/library/openjdk:13:
------
------
 > [linux/amd64 internal] load metadata for docker.io/library/openjdk:13:
------
dockerfile:1
--------------------
   1 | >>> FROM openjdk:13
   2 |     COPY . /src/java
   3 |     WORKDIR /src/java
--------------------
error: failed to solve: openjdk:13: failed to do request: Head "https://registry-1.docker.io/v2/library/openjdk/manifests/13": x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)

重定向到上面提供的 url"https://registry-1.docker.io/v2/library/openjdk/manifests/13"会显示以下消息:

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"library/openjdk","Action":"pull"}]}]}
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用工作环境。

希望您能帮助我解决该错误,提前致谢。

小智 2

这已经晚了几个月了,我想你已经弄清楚了,但为了其他有同样问题的人,我将分享对我有用的方法。

我做的第一件事是检查图像的容器名称buildkit:build-stable-1,因为这是自动为我生成的:

docker ps
Run Code Online (Sandbox Code Playgroud)

接下来,停止容器:

docker stop buildx_buildkit_trusting_moore0
Run Code Online (Sandbox Code Playgroud)

最后,移除容器:

docker rm buildx_buildkit_trusting_moore0
Run Code Online (Sandbox Code Playgroud)

之后,我开始了构建过程。我确实遇到过这个问题几次,但停止并删除容器总是有效。我对 docker 比较陌生,所以我不确定为什么会发生这种情况,但我希望这对某人有帮助。