amazon-web-services - 将现有 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"
}
}
}
我专门设置autoprovision
为false
确保不创建新卷。但是,当服务运行时,会创建一个 16GiB 的新卷(我假设这是默认大小)并使用它而不是使用“PreCreatedEBSVolume”。
我检查了docker volume ls
实例,果然,我看到了列出的 EBS 卷。如果我运行一个安装了这个卷的新实例,它会按预期安装。
有没有办法让 REX-Ray 使用现有的块存储?
解决方案
我发现了这个问题。
问题是“范围”属性。文档有以下说法:
决定其生命周期的 Docker 卷的范围。任务范围内的 Docker 卷在任务启动时自动配置,并在任务停止时销毁。任务停止后,范围为共享的 Docker 卷仍然存在。
因此,我只需将其从“任务”更改为“共享”,以使其使用现有的 EBS 卷。
推荐阅读
- labels - 如何标注方程以供将来参考?
- c# - Prism Snippets 在 Visual Studio 2017 和 ReSharper 中不起作用
- split - Rapidminer 拆分没有拆分模式的列?
- excel - 预期:标识符错误
- jsp - 如何用两个十进制值格式化jstl中的数字
- javascript - 在 JQuery 中添加新行时隐藏下拉菜单
- c# - 通过 OleDbAdapter 更新 Access 数据库失败
- r - 如何使箱线图中的变量名称清晰
- typescript - JS:错误响应状态:200 对于 URL:空
- android - Flutter Android Studio 中缺少设备文件资源管理器选项