【发布时间】:2016-04-13 20:49:37
【问题描述】:
我正在尝试将 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_ID 和AWS_SECRET_ACCESS_KEY。因此,当我执行aws ecr get-login 时,它返回了错误帐户的登录信息。我没有注意到帐号是不同的,直到我现在才回去尝试一些建议的答案。当我删除环境变量时,一切正常。我猜这个故事的座右铭是,如果您遇到此错误,请确保您登录的存储库与您应用于图像的标签匹配。
【问题讨论】:
-
您应该将该更新设置为粗体、下划线和斜体。我也刚刚经历了荷马辛普森的时刻。谢谢!
-
感谢您缩小范围!你真的拯救了我的一天!
-
仓库不存在时也会报同样的错误。检查您是否在正确的区域创建了 repo。
-
请注意,您可以设置您的 aws cli 来处理多个用户配置文件:docs.aws.amazon.com/cli/latest/userguide/…
标签: amazon-web-services docker aws-ecr