2016-07-14 9 views
5

Ich erstellte ein EBS-Volume, angehängt und montiert es auf meiner Container-Instanz. In den Aufgabendefinitions-Volumes habe ich den Quellpfad des Volumes mit dem bereitgestellten Verzeichnis festgelegt. Die Containerdaten werden nicht im bereitgestellten Verzeichnis erstellt, alle anderen Verzeichnisse außerhalb des eingehängten EBS funktionieren ordnungsgemäß.Wie verwende ich EBS-Datenträger mit ECS-Container

Der Zweck ist, die Daten aus dem Container zu speichern und mit diesem einen anderen Datenträger zu sichern.

Gibt es eine Möglichkeit, dieses angehängte Volume mit meinem Container zu verwenden? oder ist eine bessere Möglichkeit, mit Volumes und Backups zu arbeiten.

BEARBEITEN: Es wurde mit einem zufälligen Docker-Image getestet, das das Volume ausführt, und ich hatte das gleiche Problem. Ich schaffe es, den Docker-Dienst neu zu starten, aber ich suche immer noch nach einer Lösung, ohne Docker neu zu starten.

einen Behälter mit einem Volumen-Verzeichnis Inspizieren, die dem montierten EBS

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

Das Verzeichnis zeigt:

$ ls /mnt/data/ 
lost+found 

einen Behälter mit einem Volumen-Verzeichnis Inspizieren, die nicht die montierte EBS ist

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

Das Verzeichnis zeigt:

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

Ich weiß nicht, was Sie erreichen wollen, aber ich bevorzuge es, einen EBS-Snapshot zu erstellen, Sie können ihn planen, wenn Sie möchten und wenn etwas passiert, haben Sie alle Ihre vms wie zuvor konfiguriert und speichern eine Menge Arbeit in der Zukunft, außerdem können Sie diesen Schnappschuss in andere Regionen übertragen. –

+0

@FernandoZamperin ja, ich möchte Snapshots für diese EBS planen, aber zuerst brauche ich, dass der Container es richtig verwendet –

+0

Vielleicht hilft das: http://StackOverflow.com/Questions/28792272/attaching-and-mounting-existing-Ebs -volume-to-ec2-instance-Dateisystem-Problem –

Antwort

2

Es klingt wie das, was Sie möglicherweise tun möchten, ist die Verwendung des AWS EC2 Launch Configurations zu machen. Mit Startkonfigurationen können Sie festlegen, dass EBS-Volumes beim Start erstellt und an Ihre Instanz angefügt werden. Dies geschieht, bevor der Andock-Agent und nachfolgende Aufgaben gestartet werden.

Als Teil Ihrer Startkonfiguration, möchten Sie auch unter Konfigurieren Sie die Benutzerdaten Details entlang der Linien von mit etwas aktualisieren:

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

Dann so lange, wie Ihr Behälter ist Setup auf /data auf dem Host zugreifen, wird alles nur auf Anhieb funktionieren.

Bonus: Wenn Sie ECS-Cluster verwenden, nehme ich an, dass Sie bereits Startkonfigurationen verwenden, um Ihre Instanzen dem Cluster beizutreten. Wenn nicht, können Sie neue Instanzen hinzufügen automatisch als gut, mit so etwas wie:

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

Speziell in diesem Bit, werden Sie diesen Teil bearbeiten möchten: --env=ECS_CLUSTER=your-cluster-here

Hoffnung, das hilft.