docker登录:存储凭据时出错`存根接收到错误数据'



首先,我安装了AWS-CLI,我已经使用"AWS配置"来设置我的密钥,我还使用"Docker登录"命令登录,当我键入Get-ECRoginCommand时,我成功了。它工作并为我返回结果。

但是当我尝试使用命令时:

(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin 837859123533.dkr.ecr.ap-east-1.amazonaws.com/spring-boot

我得到一个错误,看起来像这样:

保存凭据时出错:存储凭据时出错-错误:退出状态1,out:error storing credentials - err: exit status 1, out:存根接收到错误数据。``

编辑:另请参阅Ethan Davis的解决方案:

我发现删除C:\Program Files\Docker\Docker\resources\bin\Docker-credential-desktop.exe和C:\Program Files\Docker\Docker\resources\bin\Docker-credential-winger.exe对我有效


原件:Joelster评论链接的解决方案对我有效。

一个快速的解决方法是修改.docker\config.json文件删除以下行以便docker将使用文件系统存储令牌:

<blockquote\
"credsStore": "wincred"

>我打开了文件c:Userssashoalm.dockerconfig.json;credsStore";钥匙在那之后,它起了作用:

type pass.txt | docker login -u AWS --password-stdin https://123123.dkr.ecr.us-west-1.amazonaws.com

结果是:

WARNING! Your password will be stored unencrypted in C:Userssashoalm.dockerconfig.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

截至今天,此问题仍然存在。以下是我发现的东西-

1.)使用SSO进行身份验证时会出现此问题。我正在为AWS使用Azure SSO。(https://www.npmjs.com/package/aws-azure-login)

2.)原因是-从SSO返回的令牌足够长(超过2550个字符),而windows凭据管理器不支持这种长令牌。

3.)如果您使用ECR凭证助手(https://github.com/awslabs/amazon-ecr-credential-helper)不幸的是,它似乎也不适用于SSO——https://github.com/awslabs/amazon-ecr-credential-helper/issues/229

然而,我遵循了这些步骤作为变通方法&我在Windows-上

1.)删除/重命名位于"C:Program FilesDockerDockerresourcesbin"目录中的"docker-credential-wincred.exe"文件。

2.)取下"credStore"&来自docker配置的"credsStore"密钥(C:UsersPROFILE_NAME.dockerconfig.json)。

我得到以下回应-

WARNING! Your password will be stored unencrypted in C:Userssandeep.kumar.dockerconfig.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
  • 为解决这一问题而开放的门票-

https://github.com/danieljoos/wincred/issues/18

https://github.com/aws/aws-cli/issues/5636

正如@Ethan Davis所提到的,删除以下文件对我有帮助:

  • C:Program FilesDockerDockerresourcesbindocker-credential-desktop.exe
  • C:Program FilesDockerDockerresourcesbindocker-credential-wincred.exe

来自另一个线程-Mac OS X上的Docker登录失败解决方案有助于Mac操作系统:mv ~/.docker ~/.docker.bak

这两个解决方案都对我有效,删除了C:\Program Files\Docker\Docker\resources\bin\Docker-credential-desktop.exe和C:\Program Files\Docker\Docker\ resources\bin\Docker credential-wincred文件。exe并删除{"credsStore":"……"},然后在config.json文件中我的结构如下

{
"auths": {
"Account_AWS.dkr.ecr.Region_AWS.amazonaws.com": {
"auth": "My token"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client / 19.03.13 (windows)"
},
"stackOrchestrator": "swarm"
}

通过刚删除";credsStore":"桌面;在config.json文件中。

我什么都没用,所以我安装了Amazon ECR Docker Credential Helper,所以你根本不需要docker login

choco install amazon-ecr-credential-helper

将docker凭据ecr登录二进制文件放在PATH上,并将~/.docker/config.json文件的内容设置为:

{
"credsStore": "ecr-login"
}

官方回购:https://github.com/awslabs/amazon-ecr-credential-helper

编辑:在Windows中,您可以从这里下载amazon-ecr-credential-helperhttps://github.com/awslabs/amazon-ecr-credential-helper/releases并按照此处所述进行安装:https://pulseadvancedmedia.co.uk/aws/setting-up-aws-ecr-credential-helper-in-windows/

与最新版本的Dockeramazon-ecr-credential-helper一起安装。

因此,您只需要通过修改%userprofile%/.docker/config.json~/.docker/config.json中的config.json文件来激活它。

config.json的内容设置为:

{
"credsStore": "ecr-login"
}

或者,您也可以将内容设置为:

{
"auths": {
"XXXXXXXXXXXX.dkr.ecr.ap-east-1.amazonaws.com": {
"auth": ""
}
}
}

(其中XXXXXXXXXXXXX是AWS帐号,ap-east-1是选择的区域,auth为空)。

现在,如果您重复docker login --username AWS XXXXXXXXXXXX.dkr.ecr.ap-east-1.amazonaws.com,那么这次它将成功。

完整的说明可以在亚马逊的ecr凭证帮助页面上找到。

2023年8月

我也遇到过类似的错误,下面是这个页面的所有帮助。我用的是windows 10。

我已尝试从此目录C:Program FilesDockerDockerresourcesbin:
中删除和/或更改此文件的名称
  • docker-credential-desktop.exe
  • docker-credential-ecr-login.exe
  • docker-credential-wincred.exe
我还试图从C:UsersXXXX.docker中删除credStorecredStore

删除上面的3个文件是可行的,但在我的情况下,每次打开Docker时,都会提示我的wincred不见了,我的Dockerhub也没有连接。

我的解决方法是,我只是从C:UsersXXXX.docker中删除config.json文件,而不更改或删除上面的3个文件。这可以防止Dockerhub断开连接,并且仍然能够保存AWS配置

最新更新