1

每次我提交批处理作业时,都会创建一个新的 Docker 容器还是重用旧容器。

如果每次都创建一个新的 Docker 容器,那么当作业完成时容器会发生什么。

在 AWS ECS 中,ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 变量设置从任务停止到移除 Docker 容器的等待时间(默认为 3 小时)

如果所有这些容器都在三个小时后才被清理,那么如果我提交大量作业,ECS容器实例会不会很容易被填满?

收到此错误 CannotCreateContainerError: API error (500): devmapper when running a batch job。如果我在作业结束时清理 docker 容器文件有帮助吗?

4

1 回答 1

1

每次我提交批处理作业时,都会创建一个新的 Docker 容器还是重用旧容器。

是的。Batch 上运行的每个作业都将作为一个新的 ECS 任务运行,这意味着每个作业都有一个新容器。

如果所有这些容器都在三个小时后才被清理,那么如果我提交大量作业,ECS容器实例会不会很容易被填满?

这一切都取决于您的作业工作量、作业长度、磁盘使用情况等。对于大量消耗磁盘的短作业,这是完全可能的。

CannotCreateContainerError: API error (500): devmapper

此错误的文档指出了一些可能的解决方案,但是您已经指出的第一个在这种情况下可能无济于事。

ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION在 ECS 上默认为 3h,在批处理集群上似乎默认设置为 2m - 您可以检查一个批处理实例上的 EC2 用户数据,以验证它是否在您的集群上以这种方式设置。根据集群的年龄,这些设置可能会发生变化。如果不创建全新的集群,Batch 不会自动更新到最新的 ECS Optimized AMI,因此如果它也没有更改设置,我不会感到惊讶。

如果您的清理持续时间设置当前设置得很低,您可以尝试创建一个自定义 AMI,该 AMI 预置比正常的 docker 卷更大。默认情况下,ECS 优化的 AMI 附带 8GB 根驱动器和 22GB 用于 docker 的卷。

于 2018-09-08T19:42:20.240 回答