So mounten oder verknüpfen Sie eine einzelne Datei in einem Docker-Container

0
330

Docker-Volume und Bind-Mounts werden verwendet, um Verzeichnisse auf dem Host-Betriebssystem an . zu binden Speicherorte im Dateisystem des Containers. Sie werden zwar häufig verwendet, um ganze Verzeichnisse zu mounten, Sie können sie aber auch verwenden, um einzelne Dateien zu symbolisieren.

Symptomen von Docker vom Host aus

h2>

Das Mounten ganzer Verzeichnisse funktioniert gut, wenn Sie eine ganze Liste von Konfigurationsdateien überschreiben, aber wenn Sie nur auf eine abzielen möchten, müssen Sie eine einzelne Datei mounten. Dies ist auch nützlich, wenn Sie mehrere Mounts im selben Verzeichnis haben möchten, jedoch von unterschiedlichen Speicherorten. Es funktioniert ähnlich wie ein normaler Linux-Symlink, außer dass es über Docker verarbeitet wird und die Brücke zwischen Host- und Container-Dateisystem überquert.

Normale Docker-Volume-Mounts erfordern, dass Sie in ein Zielverzeichnis mounten, in dem das Volumen wird verknüpft.

docker volume create nginx-config docker run -d –name devtest –mount source=nginx-config,target=/etc/nginx nginx:latest

Bei Bind-Mounts kann die Quelle jedoch ein Verzeichnis sein oder Datei auf dem Host. Volume-Mounts unterstützen dies nicht, und obwohl Sie sie normalerweise verwenden möchten, müssen Sie die Bind-Mounts der unteren Ebene verwenden, wenn Sie einzelne Dateien mounten möchten.

Dazu können Sie die Container mit dem Flag –mount type=bind , die einzelne Dateien unterstützen, wenn Sie den Pfad angeben:

docker run -it –mount type=bind,source=/path/file.cfg,target=/etc /example/file.cfg nginx sh Advertisement

Alternativ, wenn Sie wirklich Docker-Volumes verwenden möchten, können Sie ein Volume nur mit der Datei erstellen, die Sie mounten möchten, und es in ein temporäres Verzeichnis im Container einhängen , und erstellen Sie dann einen tatsächlichen symbolischen Link im Container (im Docker-Build-Skript), der mit der Datei auf das temporäre Verzeichnis verweist. Das ist wahrscheinlich insgesamt eine schlechtere Lösung als ein Bind-Mount, aber es ermöglicht Ihnen, die Daten über die Docker-Volume-API zu speichern.