Docker 构建:无法为 openjdk 获取 oauth 令牌?

Kes*_*oco 17 docker dockerfile

尝试在 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'
Run Code Online (Sandbox Code Playgroud)

这个错误究竟是什么意思?我缺少权限吗?

作为参考,这就是我的 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*lon 50

看起来您在 docker 配置中启用了 buildkit。Buildkit 还不稳定,可能会导致这些类型的问题。请在禁用 buildkit 的情况下重试。

在 Linux 中,使用环境变量:

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

在 Windows 和 macOS 中,启动 Docker 桌面应用程序,转到Settings,选择 Docker Engine并查找现有条目:

"buildkit": true
Run Code Online (Sandbox Code Playgroud)

更改此条目以禁用 buildkit:

"buildkit": false
Run Code Online (Sandbox Code Playgroud)

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

  • 如果故意启用 BUILDKIT 会怎样?`DOCKER_BUILDKIT=1 docker build --target artifact --output type=local,dest=. .`. 如何修复错误?是否是由于命令在代理后面执行? (5认同)
  • 我因此而头疼。多谢。 (2认同)
  • 回复我自己,在 Docker Desktop 和系统环境变量中正确设置代理后,错误对我来说消失了。 (2认同)

小智 35

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

命令是:

docker login
Run Code Online (Sandbox Code Playgroud)

之后我必须提供Docker Hub 的用户名密码。问题已解决。

请注意,如果您使用自定义注册表,则必须改为运行docker login <registry>


Jos*_*ues 6

在 * MAC上使用Docker Desktop我必须注销并重新登录,然后它就可以工作了。


Gir*_*tur 6

如果您在 2021 年 8 月 31 日订阅更改为 docker 后遇到此问题,则意味着您需要登录 docker hub 才能执行操作。

从 docker 桌面应用程序使用 docker login 或从终端使用 docker login 命令。

如果您之前尚未创建 docker 帐户,则可以在此处注册个人(免费)计划 - https://hub.docker.com/或使用您的组织为您提供的 docker 帐户(如果您有的话) 。

这里提到了对订阅的更改 - https://docs.docker.com/subscription/

  • 这对我有用,我必须登录到我的 Docker 桌面。 (2认同)