gpt4 book ai didi

docker - AWS ecs - 如果其中一个容器退出或被杀死,所有容器都会被杀死(停止)

转载 作者:行者123 更新时间:2023-12-02 08:39:11 26 4
gpt4 key购买 nike

环境

  • AWS ECS
  • Docker 版本 17.03.1-ce,内部版本 7392c3b/17.03.1-ce

问题

我们的应用程序中有 3 个 docker 容器。

  • 数据库
  • DB-seed(数据库迁移脚本运行程序)
  • 应用服务器

DBapp-server 启动,但是一旦 DB-运行一些迁移脚本后,seed 退出(理应如此)。其余容器死亡(停止)。

这种奇怪的行为仅发生在 AWS ecs 中,而不会发生在我的本地 docker 设置中。

此外,终止任何容器都会停止 AWS-ECS 中的其他容器。

我们的 docker compose 文件

version: '2'

services:
db:
image: db-image
hostname: db
cpu_shares: 50
mem_limit: 3758096384
volumes:
- /data/db:/data/db
ports:
- "27017:27017"
db-seed:
image:db-seed
cpu_shares: 10
mem_limit: 504288000
links:
- db
web:
image: server-image
cpu_shares: 50
mem_limit: 3758096384
ports:
- "8080:8080"
links:
- db

这是 AWS ecs 中的问题还是一项功能(全部或无)?

最佳答案

您在任务定义中缺少essential 参数。不幸的是,我不知道通过 docker-compose 插入此参数的方法,但这就是导致您在生成的 ECS 任务中出现行为的原因。来自文档:

If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the essential parameter of a container is marked as false, then its failure does not affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential.

请注意,省略参数时,参数默认true。鉴于您的所有任务都缺少该参数,预计当其中一个任务退出时,它们的行为都会停止。

更多信息可以在 ECS 任务定义参数文档中找到:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment

我知道这不是一个准确的答案,但我希望它有助于确定如何解决您的问题。

关于docker - AWS ecs - 如果其中一个容器退出或被杀死,所有容器都会被杀死(停止),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45716832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com