如果在【Docker x AWS】CLI中出现”Error saving credentials: error storing credentials – err: exit status 1, out:”的错误,请提供一种中文本地化的选项:

错误内容

当我像往常一样进行CLI登录时,出现了以下错误。

Error saving credentials: error storing credentials - err: exit status 1, out: `Post "http://ipc/registry/credstore-updated": dial unix backend.sock: connect: connection refused`

原因和解决方法

我对此感到非常困惑,于是我决定进行一番调查。

只是没有启动Docker Desktop而已…

错误消息表示在执行CLI登录命令时,无法使用存储来保存认证信息。错误消息中包含了”backend.sock: connect: no such file or directory”,这表示无法找到后端的套接字文件。

这次的问题是由于Docker守护程序未启动(未启动Docker桌面)导致CLI无法访问必需的后端套接字文件,但经过调查发现.docker/config.json参数可能也存在问题的情况。

cat ~/.docker/config.json

执行上述操作后,您将能够查看到以下的身份验证信息。

{
	"auths": {
		"xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com": {},
		"xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com": {},
		"xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com": {}
	},
	"credsStore": "desktop"

“credsStore”: “desktop” 是指CLI保存验证信息(登录信息)的方式,对于desktop而言,表示验证信息是通过桌面应用程序进行保存的。我使用Docker Desktop,所以显示为这样。

通常情况下,通过桌面应用程序保存和检索数据在安全方面更可靠。然而,有一些文章称通过删除此部分或删除整个 JSON 可以解决错误。

请参考

关于凭证存储(credential store),在官方文档中有以下记录,供您参考。
docker登录

登录后,该命令将保存认证信息到$HOME/.docker/config.json中。如果出现此错误,则可能与此有关。

您可以登录您具有凭证的任何公共或私有存储库。当您登录时,该命令将凭证存储在Linux上的$HOME/.docker/config.json或Windows上的%USERPROFILE%/.docker/config.json中,具体步骤如下描述。

Docker 引擎可以将用户凭据保存在外部凭证存储中,例如操作系统的本机密钥链。使用外部存储比在Docker配置文件中存储凭据更安全。

你需要在$HOME/.docker/config.json中指定凭证存储库,告诉docker引擎使用它。配置属性的值应该是要使用的程序的后缀(即docker-credential-之后的部分)。例如,要使用docker-credential-osxkeychain:
{
“credsStore”: “osxkeychain”
}
如果你当前已登录,请运行docker logout命令从文件中删除凭据,然后再次运行docker login。

广告
将在 10 秒后关闭
bannerAds