在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
9条答案
按热度按时间dl5txlt91#
看起来您在Docker配置中启用了BuildKit。BuildKit可能会导致这些类型的问题。请在禁用BuildKit的情况下重试。
在Linux中,使用环境变量:
在Windows和macOS中,启动Docker桌面应用程序,进入 * 设置 *,选择 *Docker引擎 * 并查找现有条目:
更改此条目以禁用buildkit:
然后单击“应用并重新启动”并重试。
o2rvlv0m2#
在Mac上更新到新的Docker版本后,我也遇到过这个问题。不过,从终端再次登录后,我已经解决了这个问题。
命令是:
之后,我必须为Docker Hub提供用户名和密码。问题被修复。
请注意,如果使用自定义注册表,则必须改为运行
docker login <registry>
。vom3gejh3#
如果您在2021年8月31日订阅更改为Docker后面临此问题,那么这意味着您需要登录Docker Hub才能执行操作。
从Docker桌面应用程序使用Docker登录或从终端使用Docker登录命令。
如果您之前没有创建Docker帐户,那么您可以在这里注册一个个人(免费)计划-https://hub.docker.com/或使用您的组织给您的Docker帐户(如果您有一个)。
此处提到对订阅的更改-https://docs.docker.com/subscription/
kmb7vmvb4#
在*MAC上使用Docker Desktop,我必须注销并重新登录,它工作正常。
x0fgdtte5#
我的案例:
在Windows 10上使用Docker与Linux WSL 2。
图片是ubuntu的:焦点。
我不得不转到Docker桌面的Troubleshoot部分,并使用**“Clean / Purge data”选项。我以前尝试过“Reset to factory defaults”**,它在错误中给了我一个额外的行,但没有修复它。所以可能两者都需要。
然后我重新启动Docker和“瞧”
omjgkv6w6#
首先,如果您已登录,请注销,然后重新登录:
$ docker logout
$ docker login
提供您凭据如果您在某个Docker工艺品工厂或组织
$ docker login #link_of_the_artifactory_here
内部工作pxq42qpu7#
我的案例:
在Windows 10上使用Docker与Linux WSL2。
我刚刚做了
docker logout
,它成功了。我记得以前我做过docker登录。因此,即使是公共图像,docker也强制进行身份验证。唯一的出路是重新登录或注销docker。我注销了docker,它成功了。6yt4nkrj8#
对于Windows,您需要先登录Docker桌面,然后才能正常工作。
y1aodyip9#
对于我在Windows上,只需重新启动Docker它就会工作。