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

mwyxok5s  于 2023-04-20  发布在  Linux
关注(0)|答案(2)|浏览(690)

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

FROM openjdk:13
COPY . /src/java
WORKDIR /src/java
RUN ["javac","greenchallenge.java"]
ENTRYPOINT ["java","greenchallenge"]

构建映像所遵循的步骤:
1.使用以下命令创建了一个新的生成器:docker buildx create --name pibuilder(* 我想使用多架构功能 *)
1.使用以下命令初始化构建器:docker buildx use pibuilder
1.构建映像并使用以下命令推送:

docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t my_java:latest -t my_java:1.0.0 --push .

运行step-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

重定向到上面提供的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"}]}]}

**注意:**我使用的是工作环境。

希望你能帮我解决这个错误,先谢谢了。

nuypyhwy

nuypyhwy1#

这是未来几个月晚了,我想你已经想通了,但为了其他人有同样的问题,我会分享什么为我工作。
我做的第一件事是检查buildkit:build-stable-1映像的容器名称,因为这是自动为我生成的:

docker ps

接下来,停止容器:

docker stop buildx_buildkit_trusting_moore0

最后,取出容器:

docker rm buildx_buildkit_trusting_moore0

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

jjjwad0x

jjjwad0x2#

只是添加到answer provided by thenoobinventor。这个答案对我的问题有很大的帮助,但是还需要一个额外的步骤。
直到我最终遇到了这个问题和参考答案,我才注意到构建日志的一个关键部分,第一行包括“引导buildkit”。
我忘记了,在之前的工作中,我创建了一个新的builder示例,使用moby/buildkit进行ARM构建。如参考答案中所述,停止buildkit容器解决了部分问题,但Docker会在下一次构建时重新启动它,因为它被设置为我的默认构建器。
列出您当前的构建器:

docker builder ls

如果驱动程序/端点为“docker”的构建器不是当前的构建器(如名称后的星号所示),您可以使用相同的“builder”命令切换到所需的构建器,在我的情况下,它被命名为“default”:

docker builder use default

一旦我做到了这一点,Docker将最终建立我的形象。

相关问题