2016-06-24 3 views
1

Ich verwende eine EC2-Instanz zum Ausführen von Andockfenster. Auf meinem lokalen Computer, der OSX verwendet, verwende ich den Docker-Computer, um Container und Volumes zu erstellen. Wenn ich versuche, einen lokalen Ordner in einen Container zu mounten, ist das nicht möglich.HOST-Ordner kann nicht in Amazon Docker Container geladen werden?

docker create -v /data --name data-only-container ubuntu /bin/true 
docker run -it --volumes-from data-only-container -v $(pwd)/data:/backup ubuntu bash 

Mit dem ersten Befehl ich ein Datum nur Container erstellen und ich bin der zweiten Befehl ausgeführt wird in einen Behälter zu erhalten, die die Nur-Daten-Containervolumen und der zu montieren haben sollte, ich versuche, aber beim Zugriff darauf ist der Ordner/das Backup leer

Was mache ich falsch?

EDIT: Ich versuche, einen Host-Ordner zu mounten, um Backup-Daten von meinem PC in den Container wiederherzustellen. Was wäre in diesem Fall ein anderer Ansatz?

Soll ich Flocker benutzen?

Antwort

2

Ein Host-Volume, das mit -v /path/to/dir:/container/mnt bereitgestellt wurde, hängt ein Verzeichnis vom Docker-Host innerhalb des Containers an. Wenn Sie diesen Befehl auf Ihrem OSX-System ausführen, verweist $(pwd)/data auf ein Verzeichnis auf Ihrem lokalen Rechner, das nicht auf dem Docker-Host, der EC2-Instanz, vorhanden ist. Wenn Sie sich bei Ihrer EC2-Instanz anmelden, finden Sie wahrscheinlich das Verzeichnis $(pwd)/data, das dort erstellt und leer ist.

Wenn Sie Ordner von Ihrem OSX-System in einen Andock-Container einbinden möchten, müssen Sie Docker auf dem OSX-System selbst ausführen.


Edit: Um die hinzugefügte Frage zu beantworten, wie die Daten in der Cloud bis zu Ihrem Behälter zu bewegen, gibt es oft Möglichkeiten, um Ihre Daten an dem Cloud-Anbieter selbst, außerhalb von Docker zu bewegen, und es dann direkt enthalten innerhalb des Containers. Um einen Docker nur Ansatz zu tun, können Sie so etwas wie:

tar -cC /source . | \ 
docker run --rm -i -v app-data:/target busybox \ 
    /bin/sh -c "tar -xC /target" 

Dies wird Ihre Daten mit Teer über ein Rohr in ein benannten Volumen auf Ihrem Docker Host hochladen. Sie können dann das genannte "app-data" -Laufwerk in andere Container aufnehmen. Wenn Sie dies bei größeren Datensätzen mehrmals durchführen müssen, wäre die Erstellung eines Rsync-Containers effizienter.

+0

In der Tat ist das einzige, was ich bekomme eine Kopie von meinem $ (Pwd) auf dem Docker-Host auf AWS. Versteh nicht, was meinst du mit "Docker auf dem OSX-System selbst ausführen". Sagst du, dass das nur in Virtual Box möglich ist? –

+0

Für den Docker-Host, auf dem der Container ausgeführt wird, muss das Dateisystem auf diesem Host sichtbar sein, damit es für den ausgeführten Container freigegeben werden kann. Um also ein hostbasiertes Volume zu erstellen und Dateien von Ihrer OSX-Box aus zu teilen, ist es am besten, den Container mit der Docker Beta oder Virtualbox auszuführen. Für fortgeschrittene Benutzer gibt es andere [docker volume drivers] (https://github.com/docker/docker/blob/master/docs/extend/plugins.md), mit denen Sie eine Verbindung zu etwas anderem als Host, Container, oder benannte Volumes. – BMitch