Amazon Elastic Container Registry (Amazon ECR) 是 AWS 托管容器镜像注册表服务,它安全、可扩展且可靠。Amazon ECR 支持私有存储库,其具有使用 AWS IAM 的基于资源的权限。这样,指定用户或 Amazon EC2 实例可以访问您的容器存储库和镜像。您可以使用首选 CLI 推送、提取和管理 Docker 映像、Open Container Itistry (OCI) 映像和 OCI 兼容构件。
摘抄自aws官方文档,简述就是一个镜像仓库,云上的产品一般会提供一些额外的功能,加在一起就是ECR。
问题Gitlab CI/CD 的job不断的向ECR推送镜像文件,导致容量不断增大,而且很多镜像文件都是几年前的。ECR是基于存储的镜像文件大小、推送和拉去镜像进行收费的。为此需要清理一些长时间不用的镜像文件,ECR也为我们提供了这样的功能。
解决方法 通过aws cli 可以获取我们的所有镜像文件的详细信息:如果aws配已经置了region信息,就可以不用加region参数;
aws ecr describe-images --region xxx --repository-name xxx
可以看到镜像的推送时间,镜像的tag,镜像的仓库名称等:
2.编写我们的过期策略文件
下面这是我编写的策略文件policy.json,所有镜像文件从推送时间算起,只要是超过了180天,就进行过期清除 *** 作。
{ "rules": [ { "rulePriority": 1, "description": "Expire images older than 180 days", "selection": { "tagStatus": "any", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 180 }, "action": { "type": "expire" } } ] }
注意:这个不是立即生效的,在24小时内将进行完清除工作。
3. 通过cli进行配置过期策略:
aws ecr put-lifecycle-policy --region us-east-2 \
--repository-name xxx \
--lifecycle-policy-text file://policy.json
参考文档:
创建生命周期策略 - Amazon ECR生命周期策略允许您创建一组规则,这些规则会让未使用的存储库镜像过期。以下程序显示如何创建生命周期策略。创建生命周期策略后,受影响的镜像会在 24 小时内过期。https://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/lp_creation.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)