AWS ECS 在一个任务定义中启动多个容器

Posted

技术标签:

【中文标题】AWS ECS 在一个任务定义中启动多个容器【英文标题】:AWS ECS start multiple containers in one task definition 【发布时间】:2019-04-08 06:31:36 【问题描述】:

我有一个带有一个应用程序的 docker 容器,应用程序根据输入参数运行,传递到入口点。我想为 ECS 创建一个任务定义,并在一个任务定义中并行运行多个容器,每个容器具有不同的输入参数。

问题是 - 如果不在任务定义中为我的容器之一设置 essential 选项,我将无法做到这一点。但是,如果我的基本容器完成了,我不想阻止其他人。所有容器都是独立的。

可能的选择是为每个容器创建一个任务定义。但这会花费更多,因为我的应用程序不使用大量资源。

是否有任何其他解决方案或方法可以在一个任务定义中运行多个容器而不依赖于基本选项?

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

在您想要运行不同应用程序的多个容器的情况下。建议为它们中的每一个使用单独的任务定义。

当我们想在我们的应用程序中运行某种 sidecar 时,我们在一个任务定义中使用多个容器,该应用程序是该任务定义的容器之一。

此外,在 ECS 中,您无需为任务定义付费,而是为您为存储和运行应用程序而创建的 AWS 资源(例如 EC2 实例或 EBS 卷)付费。您只需在使用时为使用的内容付费;没有最低费用,也没有前期承诺。

定价:https://aws.amazon.com/ecs/pricing/

【讨论】:

我正在使用 Fargate 运行选项,我应该在启动任务之前在任务定义中预定义 vCPU 和内存。当它运行时,我为我使用的时间和我已经为 Fargate 预定义的所有资源付费,但不为我在任务中真正使用的资源付费。碰巧我有闲置的资源。 如果我使用的代码管道从 ECS 集群运行一项服务,那么我们如何在一项服务中运行多个任务?我正在尝试在一项任务中运行多个容器,但由于端口映射已修复而失败。我该怎么办?

以上是关于AWS ECS 在一个任务定义中启动多个容器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS ECS 中扩展任务/容器

将多个 docker 容器部署到 AWS ECS

AWS ECS 容器服务何时更改状态?

用于 ECS 任务/容器的 Terraform AWS CloudWatch 日志组

在 AWS ECS 中将带有卷参数的 docker 容器作为任务定义或服务运行

无法访问 AWS ECS EC2 实例中的端口