我试图在我的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"}]}]}
**注意:**我使用的是工作环境。
希望你能帮我解决这个错误,先谢谢了。
2条答案
按热度按时间nuypyhwy1#
这是未来几个月晚了,我想你已经想通了,但为了其他人有同样的问题,我会分享什么为我工作。
我做的第一件事是检查
buildkit:build-stable-1
映像的容器名称,因为这是自动为我生成的:接下来,停止容器:
最后,取出容器:
之后,我开始了构建过程。我确实遇到过几次这个问题,但停止并删除容器总是有效的。我对docker相对较新,所以我不确定为什么会发生这种情况,但我希望这对某人有所帮助。
jjjwad0x2#
只是添加到answer provided by thenoobinventor。这个答案对我的问题有很大的帮助,但是还需要一个额外的步骤。
直到我最终遇到了这个问题和参考答案,我才注意到构建日志的一个关键部分,第一行包括“引导buildkit”。
我忘记了,在之前的工作中,我创建了一个新的builder示例,使用moby/buildkit进行ARM构建。如参考答案中所述,停止buildkit容器解决了部分问题,但Docker会在下一次构建时重新启动它,因为它被设置为我的默认构建器。
列出您当前的构建器:
如果驱动程序/端点为“docker”的构建器不是当前的构建器(如名称后的星号所示),您可以使用相同的“builder”命令切换到所需的构建器,在我的情况下,它被命名为“default”:
一旦我做到了这一点,Docker将最终建立我的形象。