我可以configurationECS自动清除我的EC2实例中的旧容器吗?

我有什么感觉像一个相当标准的ECS部署:

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

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

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

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

我可以设置警报来监视我的EC2实例上的磁盘空间,并根据需要login到可用磁盘空间 – 但是我想知道是否我错过了一些东西。

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

是! 自版本1.13.0开始 ,ECS代理已自动清理旧的未使用的映像。 您可以看到默认设置,并在自述文件中find如何自定义它们(查看ECS_IMAGE_CLEANUP_INTERVALECS_IMAGE_MINIMUM_CLEANUP_AGEECS_NUM_IMAGES_DELETE_PER_CYCLE )。