从Bitbucket管道中的Amazon ECR中提取图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Bitbucket管道中的Amazon ECR中提取图像相关的知识,希望对你有一定的参考价值。
我正试图从Bitbucket管道从私有Amazon Docker存储库(ECR)中提取docker镜像。
我正在做以下事情:
script:
- aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION
- docker run -d -p 9092:9092 --name=kapi $AWS_ID.dkr.ecr.$AWS_REGION.amazonaws.com/company/kapi:1.0
我在Pipelines上看到的错误:
docker: Error response from daemon: Get https://$AWS_ID.dkr.ecr.$AWS_REGION.amazonaws.com/v2/company/kapi/manifests/1.0: no basic auth credentials.
答案
那么错误似乎很清楚:
no basic auth credentials
aws ecr get-login返回一个要执行的命令以便登录。我不知道你使用哪个平台,但如果你使用的是linux,
尝试执行AWS返回的命令:
$(aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION)
您应该从docker收到一条消息,告知您已成功登录:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
调试
您仍然可以通过手动运行命令来调试它是否仍然无法运行:
aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION
它应该返回如下内容:
docker login -u AWS -p ALongText https://ID.dkr.ecr.REGION.amazonaws.com
另一答案
aws ecr get-login
命令生成docker login命令。除非你eval
它,它实际上不会登录到注册表。如果你的AWS_ACCESS_ID
和AWS_ACCESS_SECRET
是正确的,这应该工作:
eval $(aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION)
您的脚本步骤应如下所示:
script:
- aws ecr get-login --registry-ids $AWS_ID --no-include-email --region $AWS_REGION
- docker run -d -p 9092:9092 --name=kapi $AWS_ID.dkr.ecr.$AWS_REGION.amazonaws.com/company/kapi:1.0
以上是关于从Bitbucket管道中的Amazon ECR中提取图像的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes
Codepipeline:权限不足无法使用 Amazon S3 对象密钥访问工件