我遇到了 Windows Docker 身份验证问题。当我尝试登录 Docker 时,身份验证凭据未正确保存,并且我的
config.json
文件仍为空或配置错误。在 docker logout
、docker login
或 docker logout
之后,删除配置文件和 docker login
(从 PowerShell 或 IntelliJ 中的终端),我得到以下信息:
{
"auths": {
"https://index.docker.io/v1/": {},
},
"credsStore": "wincred"
}
或
{
"auths": {
"https://index.docker.io/v1/": {},
"https://index.docker.io/v1/access-token": {},
"https://index.docker.io/v1/refresh-token": {}
},
"credsStore": "desktop"
}
我的问题是:
为什么
auths
字段为空或仅包含 {}
?
使用 Docker Desktop 时可以吗?应该可以吗?
Windows 上
credsStore
的正确值是多少?应该如何配置?
有没有办法确保正确保存和使用 Docker 凭据? 我在 Windows 上使用 Docker Desktop 以确保其更新到最新版本。
基本上,我想解决这个问题的原因是我正在使用 Jib 将我的 docker 镜像推送到我的存储库,但它不会推送。
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.3</version>
<configuration>
<from>
<image>eclipse-temurin@sha256:a7f7d688f16d8a93217cef5cae43a3554c6ac3094f15fa40800716489adeb8da</image>
<platforms>
<platform>
<architecture>arm64</architecture>
<os>linux</os>
</platform>
<platform>
<architecture>amd64</architecture>
<os>linux</os>
</platform>
</platforms>
</from>
<to>
<image>docker.io/${docker.username}/${project.artifactId}:${project.version}</image>
<tags>
<tag>latest</tag>
</tags>
</to>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
以下是解决 Windows 上的 Docker 身份验证问题并确保正确保存凭据的方法:
了解 auths 字段 Docker config.json 文件中的 auths 字段存储不同 Docker 注册表的身份验证信息。如果它为空或仅包含 {},则表明 Docker 未存储任何凭据。如果登录期间出现问题或者 Docker 无法正确保存凭据,则可能会发生这种情况。
creds存储价值 config.json 中的 credsStore 字段指定 Docker 使用的凭证存储。在 Windows 上,Docker 通常使用以下之一:
“wincred”:这使用 Windows 凭据管理器。 “desktop”:Docker Desktop 使用它来管理凭据。 对于 Docker Desktop,“桌面”通常是正确的值。确保 Docker Desktop 是最新的并且配置正确。
更新 Docker Desktop:确保您使用的是最新版本的 Docker Desktop。
再次登录:尝试使用 Docker CLI 再次登录: 按照提示操作并提供您的 Docker Hub 凭据。
检查凭据助手:确保凭据助手配置正确。您可以在 config.json 的 credsStore 字段下找到它。
权限:确保 Docker 具有写入配置文件和凭证存储所需的权限。
Docker Hub 身份验证:验证您的 Docker Hub 用户名和密码是否在 ~/.docker/config.json 中正确配置。如果您使用“桌面”等凭据助手,请确保其设置正确。
Jib 配置:您的 Maven Jib 插件配置看起来不错,但请仔细检查您是否已设置任何必要的环境变量或系统属性以进行身份验证,例如 DOCKER_USERNAME 和 DOCKER_PASSWORD。
悬臂工作流程示例 构建:确保使用 Jib 在本地构建镜像:
mvn 干净包
推送:当 Jib 尝试推送映像时,它应该使用存储在 Docker 配置中的凭据。如果您遇到身份验证问题,请仔细检查您的凭据和 Docker 配置。
如果问题仍然存在,请考虑删除 Windows 凭据管理器中存储的 Docker 凭据,然后尝试重新登录。这有时可以解决凭据配置错误的问题。