我正在尝试将 docker 映像推送到 Amazon ECR 注册表。我正在使用 docker 客户端 Docker 版本 1.9.1,构建a34a1d5
. I use aws ecr get-login --region us-east-1
获取 docker 登录凭据。然后我使用这些凭据成功登录,如下所示:
docker login -u AWS -p XXXX -e none https://####.dkr.ecr.us-east-1.amazonaws.com
WARNING: login credentials saved in /Users/ar/.docker/config.json
Login Succeeded
但是当我尝试推送我的图像时,出现以下错误:
$ docker push ####.dkr.ecr.us-east-1.amazonaws.com/image:latest
The push refers to a repository [####.dkr.ecr.us-east-1.amazonaws.com/image] (len: 1)
bcff5e7e3c7c: Preparing
Post https://####.dkr.ecr.us-east-1.amazonaws.com/v2/image/blobs/uploads/: no basic auth credentials
我确保 aws 用户拥有正确的权限。我还确保存储库允许该用户推送到它。为了确保这不是问题,我将注册表设置为允许所有用户完全访问。没有什么改变"no basic auth credentials"
错误。我不知道如何开始调试这个,因为所有流量都是加密的。
UPDATE
因此,当我意识到问题的根本原因时,我经历了一段荷马·辛普森·多赫时刻。我可以访问多个 AWS 账户。即使我正在使用aws configure
为了设置我设置存储库的帐户的凭据,aws cli 实际上使用了环境变量AWS_ACCESS_KEY_ID
and AWS_SECRET_ACCESS_KEY
。所以当我这样做的时候aws ecr get-login
它返回了错误帐户的登录信息。我没有注意到帐号不同,直到我现在回去尝试一些建议的答案。当我删除环境变量时,一切正常。我想这个故事的座右铭是,如果您遇到此错误,请确保您登录的存储库与您应用于图像的标签相匹配。
Answer recommended by
AWS /collectives/aws
Collective
如果你跑$(aws ecr get-login --region us-east-1)
一切都会为你完成
2021 年 7 月更新:
get-login
现已在 AWS CLI 版本 1 中弃用。如果您使用的是 AWS CLI 版本 2,则必须使用get-login-password
.
您可以通过管道输出get-login-password
到您的 docker 登录命令,以向您的 ECR 注册表验证 docker:
aws ecr get-login-password | docker login --username AWS --password-stdin ####.dkr.ecr.us-east-1.amazonaws.com
现在你应该能够docker push
并让它直接进入您的 ECR 注册表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)