Maven jib:dockerBuild 在 Ubuntu 上对非 root 用户失败(在 Windows wsl2 中也是如此)
Maven jib:dockerBuild fails for non-root user on Ubuntu (and in Windows wsl2 as well)
更新:我按照以下 link 完全删除了 Docker:
https://askubuntu.com/a/1021506
然后我像这样重新安装了 Docker:
https://docs.docker.com/engine/install/ubuntu/
重新安装后,mvn jib:dockerBuild
在没有 sudo 的情况下工作。
当运行 gcloud auth configure-docker
时,这被添加到.docker/config。json
"credHelpers": {
"asia.gcr.io": "gcloud",
"eu.gcr.io": "gcloud",
"gcr.io": "gcloud",
"marketplace.gcr.io": "gcloud",
"staging-k8s.gcr.io": "gcloud",
"us.gcr.io": "gcloud"
}
问题再次出现。在 config.json 中手动删除上述部分使 mvn jib:dockerBuild
再次工作。
运行以下命令
mvn jib:dockerBuild
一个普通的 Micronaut 3.0.2 项目给出了这个输出:
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.7.1:dockerBuild (default-cli) on project barn-validation-step: Build to Docker daemon failed, perhaps you should make sure your credentials for 'registry-1.docker.io/library/openjdk' are set up correctly. See https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#what-should-i-do-when-the-registry-responds-with-unauthorized for help: Unauthorized for registry-1.docker.io/library/openjdk: 401 Unauthorized
[ERROR] GET https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/openjdk:pull
[ERROR] {"details":"incorrect username or password"}
当使用与 sudo 相同的命令时:
sudo env "PATH=$PATH" mvn jib:dockerBuild
构建成功。在 Azure Pipelines 中使用 Maven 步骤时构建也成功。
我已经阅读了错误信息中URL的内容。我也花了几个小时在其他地方寻找解决方案,到目前为止没有运气。
我可以使用 docker login
和
登录
curl https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/openjdk:pull
returns一个令牌
如果您提供了错误的用户名或密码,Docker Hub returns 会出现以下错误信息:
$ docker login -u foo -p bar
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
请注意您在 运行 Jib 时看到的相同消息。消息来自 Docker 中心:
[ERROR] {"details":"incorrect username or password"}
另外从 sudo env "PATH=$PATH" mvn jib:dockerBuild
起作用的事实来看,一定是您本地用户环境中的 Jib 运行 使用了不同的用户名和密码信息。
Jib 搜索 various locations 以检索注册表凭据(这只是用户名和密码对),因此必须是 Jib 在 运行 作为 root 时和 运行 因为你的用户不同。如文档中所述,Jib 日志将显示它从何处获取凭据。例如,
Using credentials from Docker config (/home/user/.docker/config.json) for localhost:5000/java
或
Using credential helper docker-credential-gcr for gcr.io/project/repo
检查日志以确定凭据的来源并修复它们。
这个命令引起了问题:
gcloud auth configure-docker`
通过使用
gcloud auth configure-docker eu.gcr.io
相反,一切都如描述的那样工作。原因似乎是使用后一个命令,Jib 基础图像存储库和我的目标存储库(位于 eu.gcr.io 内)之间没有冲突。
更新:我按照以下 link 完全删除了 Docker: https://askubuntu.com/a/1021506
然后我像这样重新安装了 Docker: https://docs.docker.com/engine/install/ubuntu/
重新安装后,mvn jib:dockerBuild
在没有 sudo 的情况下工作。
当运行 gcloud auth configure-docker
时,这被添加到.docker/config。json
"credHelpers": {
"asia.gcr.io": "gcloud",
"eu.gcr.io": "gcloud",
"gcr.io": "gcloud",
"marketplace.gcr.io": "gcloud",
"staging-k8s.gcr.io": "gcloud",
"us.gcr.io": "gcloud"
}
问题再次出现。在 config.json 中手动删除上述部分使 mvn jib:dockerBuild
再次工作。
运行以下命令
mvn jib:dockerBuild
一个普通的 Micronaut 3.0.2 项目给出了这个输出:
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.7.1:dockerBuild (default-cli) on project barn-validation-step: Build to Docker daemon failed, perhaps you should make sure your credentials for 'registry-1.docker.io/library/openjdk' are set up correctly. See https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#what-should-i-do-when-the-registry-responds-with-unauthorized for help: Unauthorized for registry-1.docker.io/library/openjdk: 401 Unauthorized
[ERROR] GET https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/openjdk:pull
[ERROR] {"details":"incorrect username or password"}
当使用与 sudo 相同的命令时:
sudo env "PATH=$PATH" mvn jib:dockerBuild
构建成功。在 Azure Pipelines 中使用 Maven 步骤时构建也成功。
我已经阅读了错误信息中URL的内容。我也花了几个小时在其他地方寻找解决方案,到目前为止没有运气。
我可以使用 docker login
和
curl https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/openjdk:pull
returns一个令牌
如果您提供了错误的用户名或密码,Docker Hub returns 会出现以下错误信息:
$ docker login -u foo -p bar
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
请注意您在 运行 Jib 时看到的相同消息。消息来自 Docker 中心:
[ERROR] {"details":"incorrect username or password"}
另外从 sudo env "PATH=$PATH" mvn jib:dockerBuild
起作用的事实来看,一定是您本地用户环境中的 Jib 运行 使用了不同的用户名和密码信息。
Jib 搜索 various locations 以检索注册表凭据(这只是用户名和密码对),因此必须是 Jib 在 运行 作为 root 时和 运行 因为你的用户不同。如文档中所述,Jib 日志将显示它从何处获取凭据。例如,
Using credentials from Docker config (/home/user/.docker/config.json) for localhost:5000/java
或
Using credential helper docker-credential-gcr for gcr.io/project/repo
检查日志以确定凭据的来源并修复它们。
这个命令引起了问题:
gcloud auth configure-docker`
通过使用
gcloud auth configure-docker eu.gcr.io
相反,一切都如描述的那样工作。原因似乎是使用后一个命令,Jib 基础图像存储库和我的目标存储库(位于 eu.gcr.io 内)之间没有冲突。