Leider ist es nicht möglich, dies während eines Image Build zu tun.
Ich denke, der Grund könnte Portabilität sein? Ich bin mir da nicht ganz sicher - wird nett sein, wenn das jemand weiter erklären kann.
Aber ich denke, wenn Docker Benutzern erlauben würde, Volumes auf Build zu mounten, dann muss Docker verschiedene Arten von Dateisystemen antizipieren und handhaben, zum Beispiel Windows vs Unix. Was passiert auch, wenn der Verzeichnispfad, der zum Mounten verwendet werden soll, nicht auf einem anderen Host existiert?
Wie dem auch sei, ich bin nicht ganz sicher, was Ihr Anwendungsfall ist, aber Sie sollten die ADD
oder COPY
Befehle verwenden, um Dateien von Ihrem Host-Dateisystem in das Bild während der Build zu bewegen und die verschobenen Dateien für andere Zwecke verwenden usw. wie die Installation
See:
https://docs.docker.com/engine/reference/builder/#/add
F: Also, was ist der beste Ansatz?
A: Ich denke, es gibt keinen Standard Ansatz für Montage Volumen. Normalerweise definiere ich meine Montage in der Datei docker-compose
.
See:
https://docs.docker.com/compose/compose-file/#/volumes-volume-driver
Sie können ein Volume von einer Dockerfile aus mounten, Sie können den Speicherort einfach nicht angeben - so dass es je nach Bedarf hilfreich sein kann. Der Grund ist, dass der Build unabhängig vom Host sein sollte. Wie bereits erwähnt, können Sie Dateien während des Builds kopieren, aber wenn Sie lesen/schreiben möchten, benötigen Sie möglicherweise eine andere Lösung. Sie könnten die API verwenden, um den Speicherort des dynamisch erstellten Volumes abzurufen, aber ich bin mir nicht sicher, ob ein Anwendungsfall besser wäre, als ihn in 'run' zu spezifizieren. Wenn Sie einen einzigartigen Anwendungsfall haben, würde mehr Detail helfen. – ldg
Es scheint, dass [Rocker] (https://github.com/grammmarly/rocker) in diesem Fall hilfreich sein könnte. – Opal