我试图为我正在处理的项目构建docker映像。它基于jhipster,在配置项目后,它告诉我运行以下maven命令:
./mvnw -ntp -Pprod verify jib:dockerBuild
不幸的是,它似乎不起作用,它返回给我这个错误:
[WARNING] The credential helper (docker-credential-pass) has nothing for server URL: registry.hub.docker.com
...
[WARNING] The credential helper (docker-credential-pass) has nothing for server URL: index.docker.io
[WARNING]
最终失败:
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.4.0:dockerBuild (default-cli) on project booking: (null exception message): NullPointerException -> [Help 1]
最近,我参与了一个谷歌云项目,并编辑了~/.docker/config.json
配置文件。我不得不删除谷歌的配置条目来解决另一个问题。这可能是我现在面临的问题的根源吗?
我试过做docker logout
和docker login
,但都没有成功。
一些注意事项
我不知道手动编辑配置是否导致了错误,事实上,我很确定只删除了与谷歌相关的条目,但没有删除任何与docker.*或类似的条目。
要解决此问题,请避免手动编辑docker配置文件。事实上,我认为应该尽可能避免它,以避免任何类型的配置问题
相反,只需遵循错误消息试图告诉您的内容:docker无法访问这些url。排除网络问题(例如,可以使用ping registry-1.docker.io
进行故障排除(,这应该是身份验证问题。
如何修复
我发现运行这些命令修复了它:
docker login registry.hub.docker.com
docker login registry-1.docker.io
我不知道registry-1.docker.io
是否只是另一个第一台服务器的镜像,插件在第一次连接失败后试图访问该服务器。您可以尝试登录到registry.hub.docker.com
并重新启动该命令,看看它是否足够。如果不是,请登录第二个,然后它就会工作。
我通过Gradle:运行起重臂
./gradlew jibDockerBuild
并且得到了类似的错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':jibDockerBuild'.
> com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: 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
奇怪的是,最终为我解决了这个错误的是注销Docker Desktop的。
后来,我在登录Docker Desktop时也尝试了funder7的解决方案,这也奏效了。