我正在尝试将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"
错误。我不知道如何开始调试,因为所有的流量都是加密的。
更新
所以当我意识到问题的根本原因时,我有点像荷马·辛普森·德奥。我有多个AWS账户。即使我使用aws configure
为我设置存储库的帐户设置凭据,aws cli实际上使用的是环境变量AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。所以当我做aws ecr get-login
时,它返回了一个错误帐户的登录。我没有注意到账号是不同的,直到我现在回去尝试一些建议的答案。当我移除环境变量时,一切都能正常工作。我想这个故事的主旨是,如果您遇到了这个错误,请确保您正在登录的存储库与您应用到图像上的标记匹配。