我可以将ECS配置为从我的EC2实例中自动清除旧容器[images]吗?

时间:2017-05-25 21:51:00

标签: docker amazon-ecs

我感觉像是一个相当标准的ECS部署:

  • 我的群集由两个EC2实例支持,两个EC2实例都运行CoreOS和ECS代理
  • 群集有一些服务,每个服务都有相关的任务
  • 每个服务一次运行一个任务 - 通常是最新的任务定义
  • 我的任务定义中使用的容器图像托管在ECR

现在好几次我已经去部署一个新的服务实例,只是让ECS不高兴,因为它无法在我的EC2实例上找到新图像的空间 - 我得到“设备上没有空间”错误在CloudWatch中。

如果我通过SSH连接到实例,我发现它有我所有Docker镜像和容器的旧副本 - 几乎100个前者,500个后者。我可以通过手动运行docker rmdocker rmi命令来释放磁盘空间,但我天真地认为这是ECS为我管理的事情。

当我设置服务和任务时,我通常不会与单个主机或容器进行交互 - 我相信ECS会为我安排容器。我预计它也会清除旧的容器映像,以根据需要释放磁盘空间。 (我知道这不是Docker提供的功能。)

我可以设置警报来监控我的EC2实例上的磁盘空间,并根据需要登录到可用磁盘空间 - 但我想知道我是否错过了什么。

我可以告诉ECS从我的EC2实例中清除旧的/未使用的容器[图像]吗?

1 个答案:

答案 0 :(得分:6)

是的!自版本1.13.0起,ECS代理已自动清除旧的未使用的图像。您可以在the README中查看默认设置并了解如何自定义它们(请查看ECS_IMAGE_CLEANUP_INTERVALECS_IMAGE_MINIMUM_CLEANUP_AGEECS_NUM_IMAGES_DELETE_PER_CYCLE