2016-04-22 6 views
1

So erstellen, wenn Sie den Befehl für den Container ausgeführt wird, ich die Host-Datenträger erstellen kann montieren, dass ich mit dem Befehlein Host-Verzeichnis als Datenvolumen in Dockerfile

docker run -d -P --name web -v /home/ec2-user:/home/ec2-user testing123 

will Wie kann ich mich wenden, dass /src/webapp:/opt/webapp Host-Verzeichnis in ein Argument innerhalb der Dockerfile? Kann ich VOLUME verwenden, um diese Art von Speicher zu erstellen?

Der Grund ich frage ist, dass, wenn ich versuche, es mit den Argumenten hinzufügen in

VOLUME ["/home/ec2-user/:/home/ec2-user/" ] 

Es das Verzeichnis ohne Dateien außer einem im Innern des Behälters erzeugt. Wie würde ich dieses Argument strukturieren, um damit zu arbeiten?

Antwort

3

Sie können nicht tun, was Sie tun möchten, da das Host-Verzeichnis von Ihrem Host und Ihrer Docker-Datei abhängig ist. Daher darf Ihr Image nicht von Ihrem Host abhängig sein. Legen Sie einfach ein Volume frei und verwenden Sie docker run, um Ihr Host-Verzeichnis diesem Volume zuzuordnen.

Note from Docker docs:

Das Host-Verzeichnis ist, seine Natur nach, Host abhängig. Aus diesem Grund können Sie kein Host-Verzeichnis von Dockerfile bereitstellen, da die erstellten Bilder portabel sein sollten. Ein Host-Verzeichnis wäre nicht auf allen möglichen Hosts verfügbar.

1

Beachten Sie, dass neuere Versionen von Docker das Verzeichnis in Ihrem Host mit -v /host/path:/container/path nicht mehr erstellen. Dies wurde als ein Anti-Pattern betrachtet und es war veraltet. Sie sollten Ihr Host-Dateisystem mit einem anderen Tool verwalten, das Ihnen bessere Garantien bietet.