2016-07-14 25 views
5

我创建了一个EBS卷,并将它附加并装载到我的容器实例中。在任务定义卷中,我将卷源路径设置为已加载的目录。 容器数据不是在安装的目录中创建的,所有其他安装的EBS以外的目录都正常工作。如何在ECS容器中使用EBS卷

其目的是将数据保存在容器外,并用这个另一个卷进行备份。

有没有办法将这个附加卷与我的容器一起使用?或者是处理卷和备份的更好方式。

编辑:它被测试了一个随机的docker映像运行它指定的音量,我面临同样的问题。我设法让它重新启动Docker服务,但我仍然在寻找一个解决方案而不重新启动Docker。

检测容器与作为安装EBS

"HostConfig": { 
    "Binds": [ 
    "/mnt/data:/data" 
], 
... 
"Mounts": [ 
    { 
    "Source": "/mnt/data", 
    "Destination": "/data", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "rprivate" 
    } 
], 

的目录显示的卷目录:

$ ls /mnt/data/ 
lost+found 

检测容器与不是安装EBS卷目录

"HostConfig": { 
    "Binds": [ 
    "/home/ec2-user/data:/data" 
    ], 
... 
"Mounts": [ 
    { 
    "Source": "/home/ec2-user/data", 
    "Destination": "/data", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "rprivate" 
    } 
] 

的目录显示:

$ ls /home/ec2-user/data 
databases dbms 
+0

我不知道你要达到什么目的,但我更喜欢制作EBS快照,如果你愿意,可以安排它,如果发生什么事情,你可以像以前一样配置所有vms,保存在未来的许多工作中,除了您可以将此快照传送到其他地区。 –

+0

@FernandoZamperin是的,我想安排这个EBS的快照,但首先我需要容器正确使用它 –

+0

也许这有助于:http://stackoverflow.com/questions/28792272/attaching-and-mounting-existing-ebs -volume-to-ec2-instance-filesystem-issue –

回答

2

这听起来像你可能想要做的就是利用AWS EC2 Launch Configurations的。使用启动配置,您可以指定在启动时创建并附加到实例的EBS卷。这发生在码头代理和后续任务开始之前。

作为启动配置的一部分,你要同时更新用户数据配置细节沿着线的东西:

mkdir /data; 
mkfs -t ext4 /dev/xvdb; 
mount /dev/xvdb /data; 
echo '/dev/xvdb /data ext4 defaults,nofail 0 2' >> /etc/fstab; 

然后,只要你的容器设置为访问主机上的/data,所有内容都将首先运行。

红利:如果您使用的是ECS群集,我认为您已经在使用启动配置让您的实例加入群集。如果没有,你可以自动添加新的实例,以及,使用类似:

#!/bin/bash 
docker pull amazon/amazon-ecs-agent 
docker run --name ecs-agent --detach=true --restart=on-failure:10 --volume=/var/run/docker.sock:/var/run/docker.sock --volume=/var/log/ecs/:/log --volume=/var/lib/ecs/data:/data --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --volume=/var/run/docker/execdriver/native:/var/lib/docker/execdriver/native:ro --publish=127.0.0.1:51678:51678 --env=ECS_LOGFILE=/log/ecs-agent.log --env=ECS_AVAILABLE_LOGGING_DRIVERS=[\"json-file\",\"syslog\",\"gelf\"] --env=ECS_LOGLEVEL=info --env=ECS_DATADIR=/data --env=ECS_CLUSTER=your-cluster-here amazon/amazon-ecs-agent:latest 

特别是在该位,你要编辑这个部分:--env=ECS_CLUSTER=your-cluster-here

希望这有助于。