无法将Docker镜像推送到Amazon ECR:提示"no basic auth credentials"错误
解决Docker推送Amazon ECR时的"no basic auth credentials"错误
重新获取ECR登录凭证
执行官方登录命令,替换成你的区域和ECR仓库前缀:aws ecr get-login-password --region <你的区域> | docker login --username AWS --password-stdin <你的ECR仓库URI前缀>比如前缀一般是
123456789012.dkr.ecr.us-east-1.amazonaws.com,执行完应该看到Login Succeeded提示。验证AWS凭证有效性
先确认当前AWS身份有权访问ECR:aws sts get-caller-identity如果返回正确的用户/角色信息,再检查
aws configure的配置是否对应目标区域:aws configure list检查Docker配置文件
打开~/.docker/config.json,查看是否有对应ECR仓库的auth条目。如果有旧的无效凭证,直接删除该条目,然后重新执行登录命令。确认镜像标签格式
要推送的镜像必须用ECR仓库URI打标签,格式是:docker tag <本地镜像名>:<标签> <ECR仓库URI>/<镜像名>:<标签>用
docker images确认标签无误后再执行推送:docker push <ECR仓库URI>/<镜像名>:<标签>检查IAM权限
确保当前AWS身份拥有以下ECR权限:ecr:GetAuthorizationTokenecr:BatchCheckLayerAvailabilityecr:GetDownloadUrlForLayerecr:BatchGetImageecr:InitiateLayerUploadecr:UploadLayerPartecr:CompleteLayerUploadecr:PutImage
可以在IAM控制台给对应的用户/角色附加AmazonEC2ContainerRegistryFullAccess策略(测试用),或者自定义最小权限策略。
重置Docker守护进程
如果以上步骤都无效,尝试重启Docker服务:sudo systemctl restart docker然后重新登录ECR再推送。
内容的提问来源于stack exchange,提问作者Rahil Shaikh
相关产品推荐
相关产品推荐

