2016-07-14 80 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

希望這有助於。

相關問題