首页 > 解决方案 > 将现有 EBS 卷与 ECS 上的 Docker REX-Ray 插件一起使用

问题描述

我正在使用 Terraform 创建 ECS 集群、任务定义和服务。

对于任务定义,这段代码如下所示:

resource "aws_ecs_task_definition" "postgres" {
  container_definitions    = ...
  family                   = "Postgres"
  requires_compatibilities = ["EC2"]
  network_mode             = "bridge"

  volume {
    name = "PreCreatedEBSVolume"

    docker_volume_configuration {
      scope         = "task"
      autoprovision = false
      driver        = "rexray/ebs"
    }
  }
}

我专门设置autoprovisionfalse确保创建新卷。但是,当服务运行时,会创建一个 16GiB 的新卷(我假设这是默认大小)并使用它而不是使用“PreCreatedEBSVolume”。

我检查了docker volume ls实例,果然,我看到了列出的 EBS 卷。如果我运行一个安装了这个卷的新实例,它会按预期安装。

有没有办法让 REX-Ray 使用现有的块存储?

标签: amazon-web-servicesdockeramazon-ecsamazon-ebsrexray

解决方案


我发现了这个问题。

问题是“范围”属性。文档有以下说法:

决定其生命周期的 Docker 卷的范围。任务范围内的 Docker 卷在任务启动时自动配置,并在任务停止时销毁。任务停止后,范围为共享的 Docker 卷仍然存在。

因此,我只需将其从“任务”更改为“共享”,以使其使用现有的 EBS 卷。


推荐阅读