我有一个容器是ECS任务定义的一部分,我将其标记为essential=false
,因为如果此容器出现故障,我不希望ECS代理删除任务中的其他容器。使容器“非必要”在我的情况下达到了预期的结果:容器崩溃,并且任务上的其他容器不会被取下或重新启动。
但是,我确实希望这个非必要的容器能够独立重启。有没有内置的方法来实现这一目标?基本上,如果容器退出,请在该容器上运行docker start
或docker restart
(我们当前必须手动执行)。到目前为止,我对文档或探索AWS控制台没有任何好运。
Docker提供了一个在你的情况下很有用的restart policy(总是--restart),但是,基于this thread,ECS不支持重新启动现有的容器。
建议和接受的解决方法是:
ECS通过“服务”的概念支持这种用例。服务可以持续使现实(已知状态)与所需状态匹配,包括您指定的所需运行任务数。如果服务启动的任务停止,则服务将创建一个新任务来替换它。服务可帮助您管理要运行,部署,绑定到负载均衡器和从负载均衡器解除绑定的副本数量,响应负载均衡器运行状况检查,以及与自动扩展集成,以便您的服务可以自动扩展或缩小。您可以查看documentation了解更多详情。