【发布时间】:2018-10-10 13:09:43
【问题描述】:
我已经有一个 ECS 集群设置,其中包含在 ECS 容器实例上运行我的应用程序的任务。 现在,给定一个 docker 映像,我需要能够从我的应用程序内部运行它,并且它必须在我的应用程序运行的同一个 EC2 实例上运行。
我读到不建议在 docker 中运行 docker,最好的做法是创建同级 docker。 这意味着我的 EC2 实例应该运行 2 个容器:
- 我的应用,由 ECS 维护。
- 我的应用决定运行的 docker 映像。
如何实现这样的设置? ECS 支持吗?
【问题讨论】:
-
我认为 ECS 没有办法做到这一点。如果您不需要它在同一个主机实例上,则可以通过向上和向下扩展所需的服务计数来实现。您也可以像使用任何 Docker 一样手动执行此操作,但我的猜测是,如果您这样做,资源分配将被搞砸,因为 ECS 无法管理它。我认为您需要它位于同一主机上的原因是共享从主机安装的文件?也许使用 EFS 可以减轻这种要求。
-
@dpwrussell 我需要在同一台主机上的原因是因为我将在两个容器之间以非常高的比特率发送接收数据。如果我在单独的机器上运行它们,我将不必要地为更好的网卡支付更多费用。
-
是的,这很棘手。我不认为该任务可以被分割,以便它最初运行一个任务,该任务确定哪些容器是完成实际工作所必需的?然后,您可以使用成对的容器(A+B、A+C、A+D 等)执行各种不同的任务,您可以扩大这些容器以开始实际工作。
-
@dpwrussell 感谢您的任务想法。我们也带了这个,但拒绝了。手动调用的 docker 由我们应用的用户创建,因此解决方案必须更加灵活和自动化,而不是仅仅创建一组预定义任务。
-
@dpwrussell 我们最终退了一步。每个 docker 将在不同的机器上运行,并且通过进行某种压缩来降低比特率。这意味着我们将为 CPU 支付比必要更多的费用,但我们觉得我们采用了一种更精简的方法。其他选项都不是一个可行的解决方案。无论如何,您的建议已被采纳,非常感谢。
标签: amazon-web-services docker amazon-ec2 amazon-ecs