amazon-web-services - 无法将图像推送到 Amazon ECR - 失败并显示 "no basic auth credentials"

标签 amazon-web-services docker aws-ecr

我正在尝试将 Docker 镜像推送到 Amazon ECR 注册表。我正在使用 docker 客户端 Docker 版本 1.9.1,构建 a34a1d5。我使用 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" 错误没有任何改变。我不知道如何开始调试,因为所有流量都是加密的。

更新

所以当我意识到问题的根本原因时,我有一点 Homer Simpson D'Oh 的感觉。我可以访问多个 AWS 账户。即使我使用 aws configure 为我设置存储库的帐户设置凭据,aws cli 实际上也在使用环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY。因此,当我执行 aws ecr get-login 时,它返回了错误帐户的登录信息。我没有注意到帐号是不同的,直到我现在才回去尝试一些建议的答案。当我删除环境变量时,一切正常。我猜这个故事的座右铭是,如果您遇到此错误,请确保您登录的存储库与您应用于图像的标签匹配。

最佳答案

如果您运行 $(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 login 命令,以向您的 ECR 注册表验证 docker:

aws ecr get-login-password | docker login --username AWS --password-stdin ####.dkr.ecr.us-east-1.amazonaws.com

现在您应该能够 docker push 并让它直接进入您的 ECR 注册表。

关于amazon-web-services - 无法将图像推送到 Amazon ECR - 失败并显示 "no basic auth credentials",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689445/

相关文章:

java - AWS EC2 - java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

amazon-web-services - 无法使用 Kops 验证 Kubernetes 集群

macos - 拉取 Docker 镜像时出现 "read-only file system"错误

linux - Docker 客户端卡住

amazon-web-services - 启动 AWS 多节点 Ray 集群并提交简单的 python 脚本以在 conda env 中运行

node.js - 如何在 NodeJs 中使用 AWS X-Ray?

macos - 在 OS X 上运行 docker 容器时如何将主机 IP 作为环境变量传递

amazon-web-services - AWS 批处理、AWS ECR : Docker run gives an error x509: certificate signed by unknown authority

docker - 如何在我的 PATH 中设置 docker-credential-ecr-login 在 GitLab CI 中的任何其他内容之前