如何使用 docker-compose.yml 和 ecs-cli 将 EBS 卷附加到我的容器

Posted

技术标签:

【中文标题】如何使用 docker-compose.yml 和 ecs-cli 将 EBS 卷附加到我的容器【英文标题】:how to attach a EBS volume to my container using docker-compose.yml and ecs-cli 【发布时间】:2016-10-31 12:16:47 【问题描述】:

我正在使用docker-compose.yml 来定义一组容器。并使用ecs-cli compose (service) upAWS 上创建我的应用程序。

我知道AWS ECS 在创建容器时会自动提供 100GB EBS。 (即使托管容器的 EC2 实例只有 8GB 的​​硬盘。) 我想要一个持久存储,这样即使我更新了我的容器,它仍然可以指向相同的 100GB EBS。我很确定我可以做到以下几点来实现这个目标:

将外部EBS 附加到EC2 实例,并在EC2 实例中使用volume 撰写文件以将该卷附加到容器。

但是,我觉得在 ECS 上可能有更好的方法,因为它会自动为您提供 100GB ELB。也就是说,如果我使用上述方法,那么我真的“浪费”了每个容器附带的 100GB 卷。 那么,实现这一目标的最佳方法是什么。能否以如下 docker-compose.yml 格式给出答案?

container1:
  image: image1

container2:
  image: image2
  links:
    - "container1"

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

不确定您是否已经解决了这个问题。这是为我工作的docker-compose.yml

version: '2'
services:
  container1:
    volumes:
      - /var/ebsshare:/ebs
  container2:
    volumes_from:
      - container1:rw

请确保您的 EBS 源路径 (/var/ebsshare) 具有必要的权限,以便 docker 容器可以对其读取和写入数据(chmod 755?)。

container2 以读写(rw)权限共享来自 container1 的卷。

【讨论】:

以上是关于如何使用 docker-compose.yml 和 ecs-cli 将 EBS 卷附加到我的容器的主要内容,如果未能解决你的问题,请参考以下文章

如何验证我的 docker-compose.yml?

如何从.env文件获取环境变量到docker-compose.yml?

如何从 docker-compose.yml 更改 docker-compose.yml 中已安装卷的权限?

如何在 AWS Elastic Container Service 中使用现有的 docker-compose.yml 文件?

如何在 docker-compose.yml 中重建 docker 容器?

向 docker-compose.yml 公开随机端口