从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_IDAWS_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 对象密钥访问工件

CodePipeline:ECR 源 + ECS 部署配置

Jenkins Amazon ECR 插件登录问题“授权令牌已过期”

使变量在 Bitbucket 管道中的步骤中可见?

如何在 ECR 源管道中向 CodeDeploy 提供 AppSpec 和任务定义