我有一个多容器 Elastic Beanstalk 应用程序,其中包含 4 种类型的容器。其中一个容器是
scrapinghub/splash
,它的设计方式是您可以设置容器应关闭的最大内存限制,然后您可以使用 restart: always
策略运行它以再次启动它。
从我在
Dockerrun.aws.json
语法中看到的内容来看,没有什么像正常的 docker-compose 重新启动策略一样需要定义。根据我在其他资源上发现的情况,推荐的方法是创建一个 ECS 服务,该服务在任务失败时重新启动任务。
但是 - 请注意,我不想重新启动包括所有容器的整个任务,我只想重新启动其中一个容器。如果我重新启动整个任务,那么所有其他工作进程将停止运行。
那么我该怎么做呢?如何确保容器关闭后立即重新启动 - 而无需重新启动或重新部署整个任务?就像正常的 docker-compose 重启策略设置一样。
在文档中说明如下:
如果在 Elastic Beanstalk 环境中运行的 Docker 容器崩溃或因任何原因被终止,Elastic Beanstalk 会自动重新启动它。
所以,如果我理解正确的话,重启策略默认设置为“始终”。
我的解决方案是停止 docker 守护进程(systemctl stop docker)。 之后,我能够从 beanstalk 环境停止正在运行的容器。