自动化任务和映像清除 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自动化任务和映像清除

每次将任务放在一个容器实例上时,Amazon ECS 容器代理都会检查该任务中引用的映像是否为存储库中的指定标记的最新版本。如果不是,默认行为将允许代理从各个存储库中拉取映像。如果频繁更新任务和服务中的映像,则容器实例存储可能很快会被没在使用并且可能再也不会使用的 Docker 映像填满。例如,如果您使用了连续集成和连续部署 (CI/CD) 管道。

注意

可以使用 ECS_IMAGE_PULL_BEHAVIOR 参数自定义 Amazon ECS 代理映像拉取行为。有关更多信息,请参阅Amazon ECS 容器代理配置

同样,属于已停止任务的容器也可能会通过日志信息、数据卷和其他项目消耗容器实例存储空间。这些项目对于调试意外停止的容器很有用,但此存储的大部分空间在一段时间后可以安全地释放。

原定设置情况下,Amazon ECS 容器代理将自动清除已停止的任务和您的容器实例上的任何任务均未在使用的 Docker 映像。

注意

自动映像清除功能要求 Amazon ECS 容器代理的版本最低为 1.13.0。要将您的代理更新至最新版本,请参阅更新 Amazon ECS 容器代理

可调节参数

以下代理配置变量可用于调整自动化任务和映像清除体验。有关如何在容器实例上设置这些变量的更多信息,请参阅 Amazon ECS 容器代理配置

ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION

此变量指定在删除属于已停止任务的任何容器前的等待时间。只要存在引用某个映像的容器,映像清除过程就无法删除该映像。当映像不再由任何容器(已停止或正在运行)引用后,则会变成清除的候选项。默认情况下,此参数设置为 3 小时,但如果您的应用程序有需要,您最多可以将此时间间缩短为 1 秒钟。如果将该值设置为 1 秒以内,则系统会忽略该参数。

ECS_DISABLE_IMAGE_CLEANUP

如果您将此变量设置为 true,则会在您的容器实例上关闭自动映像清除,且不会自动删除映像。

ECS_IMAGE_CLEANUP_INTERVAL

此变量指定自动映像清除过程应检查要删除的映像的频率。默认值为每 30 分钟一次,但您可以将此时间缩短至 10 分钟,以便更频繁地删除映像。

ECS_IMAGE_MINIMUM_CLEANUP_AGE

此变量指定拉取映像与映像可能变成删除的候选项之间的最短时间。这可用于防止清除刚刚拉取的映像。默认值为 1 小时。

ECS_NUM_IMAGES_DELETE_PER_CYCLE

此变量指定在一个清除周期内可以清除的映像数。默认值为 5,最小值为 1。

清除工作流程

当 Amazon ECS 容器代理正在运行且自动映像清除未关闭时,该代理将按照 ECS_IMAGE_CLEANUP_INTERVAL 变量确定的频率,检查是否有未被正在运行或已停止的容器引用的 Docker 映像。如果发现未使用的映像,并且这些映像的存在时间超过了 ECS_IMAGE_MINIMUM_CLEANUP_AGE 指定的最短清除时间,则该代理将删除由 ECS_NUM_IMAGES_DELETE_PER_CYCLE 变量指定的最大数量的映像。最早引用的映像会最先删除。在删除映像后,该代理将等到下一个时间间隔并重复上述流程。