【发布时间】:2021-08-28 11:02:35
【问题描述】:
我需要相当多的 RAM 和磁盘用于 Docker 容器,该容器将不经常作为 ECS 上的任务运行。我的工作流程:
- 为 ECS 启动 EC2 实例
- 在 ECS 上运行任务
- 终止 EC2 实例
我在运行之间终止实例,因为这些资源相对昂贵,并且我不希望它们在不使用时运行。由于资源限制,Fargate 不合适,所以我在 EC2 上运行 ECS。
如果没有大量人工干预,我无法为图像获得超过 30GB 的磁盘。我可以附加任意 EBS data 卷 (/dev/xvdcz),但 AWS 仍然始终创建一个 30GB root 卷 /dev/xvda,用于容器本身。
如何为 Docker 容器本身使用大于 30GB 的卷?
我尝试过的:
- 使用根卷较大的启动配置创建 Auto Scaling 组。这确实会创建一个具有更大根卷的实例,但无法将此组附加到集群,或将其创建的 EC2 实例与集群链接。集群创建似乎与 Auto Scaling 组和实例相关联。
- 使用具有大型专用 SSD 而不是 EBS 卷的实例,再次为容器创建 30GB 分区。
- 将
dev/xvdcz安装到容器上。这确实增加了空间,但需要我重写我的代码以仅使用此文件夹。 - 创建后使用 AWS ECS cli 修改磁盘。这在a similar issue 中有描述。但是,由于我的 EC2 实例在任务完成后终止,ID 不会在运行之间持续存在,并且
aws ecs describe-clusters没有指定底层 EC2 实例,因此无法自动执行此操作。人工需要启动实例,查看 ID,然后可以通过 CLI 修改卷大小。
This issue was brought up on Github back in 2016 但标记为不重要并已关闭,那里的讨论没有多大帮助。
【问题讨论】:
标签: amazon-web-services docker amazon-ec2 amazon-ecs