我可以将 ECS 配置为自动从我的 EC2 实例中清除旧容器 [images] 吗?
Can I configure ECS to automatically purge old container [images] from my EC2 instances?
我感觉这是一个相当标准的 ECS 部署:
- 我的集群由两个 EC2 实例支持,都是 运行 带有 ECS 代理的 CoreOS
- 集群有一些服务,每个服务都有关联的任务
- 每个服务都是运行一次一个任务——通常是最新的任务定义
- 我的任务定义中使用的容器镜像托管在 ECR 中
现在有好几次我去部署一个新的服务实例,结果 ECS 变得不高兴,因为它无法在我的 EC2 实例上找到新映像的 space – 我得到“否space 留在设备上” CloudWatch 中的错误。
如果我通过 SSH 进入实例,我发现它有我所有 Docker 图像和容器的旧副本——前者几乎有 100 个,后者有 500 个。我可以通过 运行 docker rm
和 docker rmi
命令手动释放磁盘 space,但我天真地认为这是 ECS 会为我管理的事情。
当我设置服务和任务时,我通常从不与单个主机或容器交互——我相信 ECS 会为我安排容器。我预计它还会根据需要清除旧容器映像以释放磁盘 space。 (我知道这不是 Docker 提供的功能。)
我可以设置警报来监控我的 EC2 实例上的磁盘 space,并根据需要登录到空闲磁盘 space – 但我想知道我是否遗漏了什么。
我可以告诉 ECS 从我的 EC2 实例中清除 old/unused 容器 [images] 吗?
是的!由于版本 1.13.0, the ECS agent has automatically cleaned up old, unused images. You can see the default settings and find how to customize them in the README(查看 ECS_IMAGE_CLEANUP_INTERVAL
、ECS_IMAGE_MINIMUM_CLEANUP_AGE
和 ECS_NUM_IMAGES_DELETE_PER_CYCLE
)。
我感觉这是一个相当标准的 ECS 部署:
- 我的集群由两个 EC2 实例支持,都是 运行 带有 ECS 代理的 CoreOS
- 集群有一些服务,每个服务都有关联的任务
- 每个服务都是运行一次一个任务——通常是最新的任务定义
- 我的任务定义中使用的容器镜像托管在 ECR 中
现在有好几次我去部署一个新的服务实例,结果 ECS 变得不高兴,因为它无法在我的 EC2 实例上找到新映像的 space – 我得到“否space 留在设备上” CloudWatch 中的错误。
如果我通过 SSH 进入实例,我发现它有我所有 Docker 图像和容器的旧副本——前者几乎有 100 个,后者有 500 个。我可以通过 运行 docker rm
和 docker rmi
命令手动释放磁盘 space,但我天真地认为这是 ECS 会为我管理的事情。
当我设置服务和任务时,我通常从不与单个主机或容器交互——我相信 ECS 会为我安排容器。我预计它还会根据需要清除旧容器映像以释放磁盘 space。 (我知道这不是 Docker 提供的功能。)
我可以设置警报来监控我的 EC2 实例上的磁盘 space,并根据需要登录到空闲磁盘 space – 但我想知道我是否遗漏了什么。
我可以告诉 ECS 从我的 EC2 实例中清除 old/unused 容器 [images] 吗?
是的!由于版本 1.13.0, the ECS agent has automatically cleaned up old, unused images. You can see the default settings and find how to customize them in the README(查看 ECS_IMAGE_CLEANUP_INTERVAL
、ECS_IMAGE_MINIMUM_CLEANUP_AGE
和 ECS_NUM_IMAGES_DELETE_PER_CYCLE
)。