2016-07-11 9 views
6

Wenn ich VOLUME in einer Docker-Datei verwende, erstellt es ein anonymes Volume. Gibt es eine Möglichkeit, ein benanntes Volume aus der Dockerdatei zu erstellen?Wie deklariert man ein benanntes Volume in einer Dockerfile?

ich bin für die Dockerfile Äquivalent

docker run -v my-named-volume:/mnt/something repo/my-img 

Suche Alles, was ich habe es geschafft, über eine Dockerfile zu bekommen, ist das Äquivalent von

docker run -v /mnt/something repo/my-img 

Ich denke, es wäre einfach nicht unterstützt; aber sagt the doc diese

Der VOLUME-Befehl einen Mount-Punkt mit erzeugt der angegebene Name und markiert sie als extern montierten Volumes von nativen Host oder anderen Behältnissen mit.

Es scheint zu implizieren, dass es einen Weg gibt, das Volumen zu nennen, aber es sagt nicht, wie

+2

Kurze Antwort, dies ist nicht möglich * von Design * Sie können hilfreich finden [https://github.com/moby/moby/issues/30647#issuecomment-276882545] Post zu verstehen, warum – ira

Antwort

2

es nicht möglich ist. Ich denke, die Dokumente sind vielleicht irreführend formuliert.

3

Es ist ein bisschen unklar. Es erstellt einen Einhängepunkt unter Verwendung dieses Namens, aber der tatsächliche Dateipfad verwendet diesen Namen nicht. Wenn Sie eine docker inspect {container-name} machen, sehen Sie den Namen wie: "Destination": "/mnt/something", und den tatsächlichen Standort wie: "Source": "/var/lib/docker/volumes/cb80c7802244dd3669eed8afb7d94b61366844d80677eb180fa12002db04ea7c/_data",.

Dies liegt daran, dass die Dockerfile nicht an einen bestimmten Host gebunden ist und nicht sicher sein kann, dass der Host-Volume-Pfad existiert. Sie müssen dies in der run (oder gleichwertigen) Anweisung tun. Sie können die API oder docker inspect verwenden, um herauszufinden, wo sich das Volume befindet, nachdem der Container erstellt wurde, wenn Sie diese Informationen in einem Skript oder ähnlichem verwenden müssen.

Das Deklarieren des Volumes in der Dockerfile stellt sicher, dass die Daten erhalten bleiben und dem Host zur Verfügung stehen - auch wenn der Speicherort nicht voreingestellt ist.