【问题标题】:AWS ecs - All containers gets killed(STOPPED) if one of them exits or killedAWS ecs - 如果其中一个容器退出或被杀死,所有容器都会被杀死(停止)
【发布时间】:2018-01-24 18:57:31
【问题描述】:

环境

  • AWS ecs
  • Docker 版本 17.03.1-ce,构建 7392c3b/17.03.1-ce

问题

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

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

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

这种奇怪的行为只发生在 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 中的问题还是功能(全部或全部)?

【问题讨论】:

    标签: docker amazon-ec2 docker-compose amazon-ecs


    【解决方案1】:

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

    如果容器的基本参数标记为true,并且该容器因任何原因失败或停止,则属于该任务的所有其他容器都将停止。如果容器的基本参数被标记为false,那么它的失败不会影响任务中的其余容器。如果省略此参数,则假定容器是必需的。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-03
      • 2019-06-03
      • 2020-11-16
      • 2021-03-15
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多