标签: aws-ecr

无法将图像推送到Amazon ECR - 无法使用"无基本身份验证凭据"

我正在尝试将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
Run Code Online (Sandbox Code Playgroud)

但是当我尝试推送我的图像时,我收到以下错误:

$ 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
Run Code Online (Sandbox Code Playgroud)

我确保aws用户拥有正确的权限.我还确保存储库允许该用户推送它.为了确保这不是问题,我将注册表设置为允许所有用户完全访问.没有任何更改"无基本身份验证凭据"错误.由于所有流量都已加密,我不知道如何开始调试.

UPDATE

所以当我意识到问题的根本原因时,我有一点荷马辛普森D'哦.我可以访问多个AWS账户.即使我使用aws configure为我设置存储库的帐户设置我的凭据,但aws cli实际上使用的是环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY.因此,当我执行aws ecr get-login时,它返回了错误帐户的登录信息.我没注意到帐号是不同的,直到我现在回去尝试一些建议的答案.当我删除环境变量时,一切正常.我想故事的座右铭是,如果您遇到此错误,请确保您登录的存储库与您应用于图像的标记相匹配.

amazon-web-services docker aws-ecr

147
推荐指数
16
解决办法
6万
查看次数

如何在ECR中使用Docker Image与AWS EKS

我创建了EKS Cluster.我在ECR中也有码头图像.我不知道如何在YAML中使用pod定义中的docker镜像.

是否需要秘密提供凭证?或者EKS IAM角色应该获得ECR的许可吗?

权限的任何更改都必须为ECR中的Image做?

amazon-web-services aws-ecr amazon-eks aws-eks

18
推荐指数
1
解决办法
7671
查看次数

13
推荐指数
4
解决办法
3420
查看次数

从图像中删除标签

我有一张带有 2 个标签的图像(在 AWS ECR 中),我只想删除一个标签。

我可以使用以下方法轻松地从本地环境中删除: docker rmi <REPOSITORY>:<TAG>

我想从 ECR 中删除它。任何帮助,将不胜感激。

amazon-ecr aws-ecr

13
推荐指数
2
解决办法
4829
查看次数

将Docker映像从一个AWS ECR存储库复制到另一个

我们想要将docker映像从非产品复制到产品ECR帐户。是否可以不拉,重新拉紧和再次推动它。

amazon-web-services aws-ecr

11
推荐指数
1
解决办法
3338
查看次数

为 ECR 中的所有存储库设置一项生命周期策略

我很好奇是否有一种方法可以设置一个通用的生命周期策略,该策略将应用于 ECR 中的所有存储库?

目前,据我了解,没有办法做到这一点。

我正在考虑的一种方法是使用生命周期策略的 JSON 定义,并使用 AWS CLI 将其应用到所有存储库(可以稍微自动化一些)。但是这个东西应该在每次创建新存储库时运行,这会增加复杂性。

amazon-web-services aws-cli aws-ecs aws-ecr

10
推荐指数
1
解决办法
5399
查看次数

CodePipeline:ECR源+ ECS部署配置

基本上,我需要使用ECS容器的Bitbucket源代码配置CI / CD。我想使用CodePipline将新的ECR映像部署到ECS。

当前,AWS CodePipline中没有选项将bitbucket指定为源。但是,我设法通过Webhooks配置CodeBuild,因此它会构建docker文件,并在每次发布发布分支时将其推送到ECR。

我想将ECR配置为CodePipline中的“源”阶段,并将其部署到现有的ECS群集/服务中,因此部署将自动进行。

  • 我在源阶段将“ Amazon ECR”指定为带有“ image_details”输出工件的操作提供程序。
  • 我将“ Amazon ECS”(不是“ Amazon ECS(蓝色/绿色)”)指定为操作提供者,以“ image_details”作为输入工件来进行部署阶段

codepipeline_settings

不幸的是,如果在部署步骤中出现以下错误,则会导致基本配置和工件链接:

Invalid action configuration
The image definition file imageDetail.json contains invalid JSON format
Run Code Online (Sandbox Code Playgroud)

尽管“ Amazon ECR”阶段将imageDetail.json作为输出工件提供,但“ Amazon ECS”部署提供程序似乎并不期望这样做。有什么合理的方法解决这个问题吗?

我知道,可以使用bitbucket + API Gateway / Lambda + CodePipeline配置CI / CD,我也考虑使用CodeCommit代替bitbucket作为源存储库-仍然,希望有一种可能的优雅解决方案,将bitbucket与直接使用CodePipeline。

UPD: 我得到的配置非常好,如博文所述:总体思路是允许CodeBuild将源代码从bitbucket上传到S3,然后使用CodePipeline和S3作为源将新的docker映像部署到ECR并发布ECS集群中新的任务定义修订。S3仍在开销中,我正在为该任务寻找更优雅的解决方案。

amazon-ecs aws-codepipeline aws-codebuild aws-ecr

9
推荐指数
2
解决办法
1668
查看次数

Docker登录错误“没有足够的内存资源可用”

我使用的是 Windows 10 和 Docker Desktop Engine 19.03.5。

我正在尝试创建一个 AWS ECR 存储库并推送图像。

aws ecr get-login --no-include-email  # successful
docker login -u AWS -p eyJwYXlsb2F... # failed
Run Code Online (Sandbox Code Playgroud)

错误:

保存凭据时出错:存储凭据时出错 - 错误:退出状态 1,输出:error storing credentials - err: exit status 1, out:没有足够的内存资源可用于处理此命令。

足够的内存和磁盘空间。

docker aws-ecr

9
推荐指数
1
解决办法
2136
查看次数

无论如何,我可以修改 get-login-password 令牌的过期时间吗?

我能够使用 获取令牌来访问 aws ecr get-login-password。默认授权令牌的有效期为 12 小时。无论如何我可以修改默认值吗?

amazon-web-services aws-ecr

9
推荐指数
1
解决办法
2726
查看次数

CannotPullContainerError:来自守护进程的错误响应:拒绝 ECR 存储库映像的拉取访问,存储库不存在或可能需要“docker 登录”

我在 SourceAccount 的 ECR Repo 中推送了一个 docker 镜像。

我已经在 SourceAccount 中部署了一个代码管道。

当该代码管道运行时,它会在 TargetAccount 中部署 ECS 堆栈。在该堆栈中,ECS 任务是使用来自 SourceAccount 的上述镜像通过容器创建的。但是,这些任务仍处于挂起状态并最终转移到停止状态。他们显示以下错误:

Status reason   CannotPullContainerError: Error response from daemon: pull access denied for <SourceAccountId>.dkr.ecr.<Region>.amazonaws.com/<RepoName>, repository does not exist or may require 'docker login'
Run Code Online (Sandbox Code Playgroud)

请告知如何从 SourceAccount ECR 中提取图像并在 TargetAccount 中创建 ECS 任务。

笔记:

1) 当我在 TargetAccount 的 ECR 中推送相同的图像时,一切正常。ECS 任务仅在尝试从其他帐户拉取映像时无法运行。

2) 堆栈回滚,出现以下错误:

Service arn:aws:ecs:<Region>:<TargetAccount>:service/<ServiceName> did not stabilize.
Run Code Online (Sandbox Code Playgroud)

amazon-ecs aws-cloudformation docker aws-codepipeline aws-ecr

8
推荐指数
1
解决办法
9503
查看次数