Docker版本:无法获取openjdk的oauth标记?

50few1ms  于 2022-11-22  发布在  Docker
关注(0)|答案(9)|浏览(188)

在Docker中构建项目时,我无法理解此错误:

> [internal] load metadata for docker.io/library/openjdk:11:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: unexpected status: 401 Unauthorized'

此错误的确切含义是什么?我缺少权限吗?
作为参考,我的Dockerfile如下所示:

### base jdk image ###
FROM openjdk:11 as setup
ENV USER sc_user
ENV HOME /home/$USER
ENV REPO $HOME/sc
RUN useradd -u 9999 $USER
COPY --chown=$USER build.gradle gradlew $REPO/
COPY --chown=$USER gradle $REPO/gradle
USER $USER
WORKDIR $REPO
RUN ./gradlew

FROM setup as tdd
ENTRYPOINT ["./gradlew", "-t", "test"]

FROM setup as debug-tdd
ENTRYPOINT ["./gradlew", "-t", "test", "-PjvmArgs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005"]

### build jar ###
FROM setup as build
COPY --chown=$USER src $REPO/src
RUN ./gradlew clean test build generatePomFileForMavenJavaPublication
dl5txlt9

dl5txlt91#

看起来您在Docker配置中启用了BuildKit。BuildKit可能会导致这些类型的问题。请在禁用BuildKit的情况下重试。
在Linux中,使用环境变量:

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0

在Windows和macOS中,启动Docker桌面应用程序,进入 * 设置 *,选择 *Docker引擎 * 并查找现有条目:

"buildkit": true

更改此条目以禁用buildkit:

"buildkit": false

然后单击“应用并重新启动”并重试。

o2rvlv0m

o2rvlv0m2#

在Mac上更新到新的Docker版本后,我也遇到过这个问题。不过,从终端再次登录后,我已经解决了这个问题。
命令是:

docker login

之后,我必须为Docker Hub提供用户名密码。问题被修复。
请注意,如果使用自定义注册表,则必须改为运行docker login <registry>

vom3gejh

vom3gejh3#

如果您在2021年8月31日订阅更改为Docker后面临此问题,那么这意味着您需要登录Docker Hub才能执行操作。
从Docker桌面应用程序使用Docker登录或从终端使用Docker登录命令。
如果您之前没有创建Docker帐户,那么您可以在这里注册一个个人(免费)计划-https://hub.docker.com/或使用您的组织给您的Docker帐户(如果您有一个)。
此处提到对订阅的更改-https://docs.docker.com/subscription/

kmb7vmvb

kmb7vmvb4#

在*MAC上使用Docker Desktop,我必须注销并重新登录,它工作正常。

x0fgdtte

x0fgdtte5#

我的案例:
在Windows 10上使用Docker与Linux WSL 2。
图片是ubuntu的:焦点。
我不得不转到Docker桌面的Troubleshoot部分,并使用**“Clean / Purge data”选项。我以前尝试过“Reset to factory defaults”**,它在错误中给了我一个额外的行,但没有修复它。所以可能两者都需要。
然后我重新启动Docker和“瞧”

omjgkv6w

omjgkv6w6#

首先,如果您已登录,请注销,然后重新登录:$ docker logout$ docker login提供您凭据
如果您在某个Docker工艺品工厂或组织$ docker login #link_of_the_artifactory_here内部工作

pxq42qpu

pxq42qpu7#

我的案例:
在Windows 10上使用Docker与Linux WSL2。
我刚刚做了docker logout,它成功了。我记得以前我做过docker登录。因此,即使是公共图像,docker也强制进行身份验证。唯一的出路是重新登录或注销docker。我注销了docker,它成功了。

6yt4nkrj

6yt4nkrj8#

对于Windows,您需要先登录Docker桌面,然后才能正常工作。

y1aodyip

y1aodyip9#

对于我在Windows上,只需重新启动Docker它就会工作。

相关问题