首先,我安装了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评论链接的解决方案对我有效。
<blockquote\一个快速的解决方法是修改.docker\config.json文件删除以下行以便docker将使用文件系统存储令牌:
"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-helper
https://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
中删除credStore
和credStore
删除上面的3个文件是可行的,但在我的情况下,每次打开Docker
时,都会提示我的wincred不见了,我的Dockerhub也没有连接。
我的解决方法是,我只是从C:UsersXXXX.docker
中删除config.json
文件,而不更改或删除上面的3个文件。这可以防止Dockerhub断开连接,并且仍然能够保存AWS配置