每个 aws 批处理作业是否都会启动一个新的 docker 容器

Does every aws batch job spin up a new docker container

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

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

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

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

收到此错误 CannotCreateContainerError: API 错误 (500): 运行 批处理作业时的 devmapper。如果我在作业结束时清理 docker 容器文件会有帮助吗?

Every time I submit a batch job, does a new Docker container get created or the old container will be reused.

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

If all these containers only get cleanup after three hours, wouldn't the ECS container instance get filled up quick easily if I submit a lot of jobs?

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

CannotCreateContainerError: API error (500): devmapper

Documentation for this error 指出了一些可能的解决方案,但是您已经提出的第一个解决方案在这种情况下可能无济于事。

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

如果您的清理持续时间设置当前设置得较低,you might try creating a custom AMI 会提供比正常 docker 更大的音量。默认情况下,ECS 优化的 AMI 附带 8GB 根驱动器和 22GB 卷 docker。