2016-07-14 23 views
5

EBSボリュームを作成し、これをコンテナインスタンスにマウントしました。タスク定義ボリュームでは、ボリュームのソースパスをマウントされたディレクトリで設定しました。 コンテナデータがマウントされたディレクトリに作成されていないため、マウントされたEBSの他のすべてのディレクトリが正常に動作します。EBSボリュームをECSコンテナで使用する方法

この目的は、コンテナからデータを保存し、この別のボリュームでデータをバックアップすることです。

添付のボリュームをコンテナに使用する方法はありますか?ボリュームやバックアップを扱うより良い方法です。

EDIT:ボリュームを指定して実行するランダムドッカー画像でテストしましたが、同じ問題に直面しました。私はそれをDockerサービスを再起動するようにすることができますが、Dockerを再起動しなくても解決策を探しています。

搭載EBSないボリュームのディレクトリを有する容器を検査
$ ls /mnt/data/ 
lost+found 

:搭載EBS

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

ディレクトリが表示されているボリュームのディレクトリを有する容器を検査

"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スナップショットを作成したいと思っています。もし望みならスケジュールを設定できます。あなたは他の地域にこのスナップショットを転送することができるだけでなく、将来の多くの仕事。 –

+0

@FernandoZamperinはい、このEBSのスナップショットをスケジュールしたいと思いますが、最初にコンテナが正しく使用する必要があります –

+0

これはおそらく役立ちます:http://stackoverflow.com/questions/28792272/attaching-and-mounting-existing-ebs -volume-to-ec2-instance-filesystem- –

答えて

2

は、AWSのEC2 Launch Configurationsを利用することです。 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クラスタを使用している場合は、起動構成を使用してインスタンスをクラスタに参加させていることが前提です。このことができます--env=ECS_CLUSTER=your-cluster-here

希望:

#!/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 

は、具体的にそのビットで、あなたはこの部分を編集したいと思う

:いない場合は、のようなものを使用して、同様に自動的に新しいインスタンスを追加することができます。

関連する問題