Detaillierte Erklärung der Docker-Datenspeichervolumes

Detaillierte Erklärung der Docker-Datenspeichervolumes

Standardmäßig erfolgt das Lesen und Schreiben von Containerdaten auf der Speicherebene des Containers. Wenn der Container gelöscht wird, gehen die darin enthaltenen Daten verloren. Daher sollten wir versuchen, sicherzustellen, dass in der Containerspeicherschicht keine Schreibvorgänge stattfinden. Um eine dauerhafte Speicherung von Daten zu erreichen, müssen wir eine Lösung zum Speichern von Daten wählen. Derzeit gibt es mehrere Möglichkeiten:

  • Bände
  • Halterungen binden
  • tmpfs-Halterungen

Das folgende Diagramm veranschaulicht diese drei Techniken:

Bände

Volumes sind spezielle Verzeichnisse auf dem Host, die von einem oder mehreren Containern verwendet werden können. Sie haben die folgenden Eigenschaften:

  • Datenmengen können zwischen Containern geteilt und wiederverwendet werden
  • Schreibvorgänge auf das Datenvolumen haben keinen Einfluss auf das Image
  • Standardmäßig bleibt das Datenvolumen immer bestehen, auch wenn der Container gelöscht wird.

Der Zweck der Verwendung von Datenvolumes besteht darin, Daten in Containern zu speichern, sodass sie zwischen Containern gemeinsam genutzt werden können oder Datenverlust verhindert wird (in die Containerspeicherebene geschriebene Daten gehen verloren).

Die Schritte zur Nutzung von Datenvolumen gliedern sich grundsätzlich in zwei Schritte:

  1. Erstellen eines Datenvolumens
  2. Verwenden Sie den Parameter -v oder --mount, um das Datenvolume im angegebenen Verzeichnis des Containers zu mounten, sodass alle Schreibvorgänge des Containers in das angegebene Verzeichnis im Volume auf dem Hostcomputer gespeichert werden.

Volumenverwaltung

Erstellen Sie ein Volume:

$ Docker-Volume erstellen my-vol

Bände anzeigen:

$ Docker-Volumen ls
lokales My-Vol
$ Docker-Volume prüfen my-vol
[
 {
  "Treiber": "lokal",
  "Beschriftungen": {},
  "Einhängepunkt": "/var/lib/docker/volumes/my-vol/_data",
  "Name": "mein-vol",
  "Optionen": {},
  "Geltungsbereich": "lokal"
 }
]

Wir können sehen, dass das erstellte Volume my-vol im Verzeichnis /var/lib/docker/volumes/ gespeichert ist. Alle zukünftigen Schreibdaten für dieses Volume werden im Verzeichnis /var/lib/docker/volumes/my-vol/_data gespeichert.

So löschen Sie ein Volume:

$ Docker-Volume rm mein-Vol

Oder löschen Sie alle nicht verwendeten Volumes:

Docker-Volume bereinigen

Mounten Sie das Datenvolume in das Containerverzeichnis

Nachdem wir ein Volume erstellt haben, können wir es verwenden, indem wir beim Ausführen des Containers den Parameter -v oder --mount angeben:

Verwenden Sie den Parameter --mount :

$ docker run -d \
 --name=nginxtest \
 --mount Quelle=nginx-vol,Ziel=/usr/share/nginx/html \
 nginx:neueste

Die Quelle gibt das Volume an und das Ziel gibt die Datei oder den Ordner im Container an.

Oder verwenden Sie den Parameter -v:

$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html \
 nginx:neueste

Nachdem die Bereitstellung erfolgreich war, liest oder schreibt der Container Daten aus dem Verzeichnis /usr/share/nginx/html, das tatsächlich Daten aus dem Datenvolumen nginx-vol des Hostcomputers liest oder schreibt. Daher können Volumes oder Bind-Mounts auch als eine Möglichkeit für Container und Hosts betrachtet werden, Dateien gemeinsam zu nutzen.

Der Parameter -v verwendet einen Doppelpunkt, um Quelle und Ziel zu trennen. Die erste Hälfte des Doppelpunkts ist die Quelle und die zweite Hälfte das Ziel.

Wenn Sie ein Datenvolumen mounten, das noch nicht existiert, wird Docker es automatisch erstellen. (Das Erstellen eines Datenvolumens ist daher nicht erforderlich)

Wenn das im Container einzubindende Verzeichnis kein leeres Verzeichnis ist, werden die Dateien im Verzeichnis auf das Datenvolumen kopiert. (Bei Bind-Mounts überschreibt das Verzeichnis auf dem Host immer das im Container zu mountende Verzeichnis)

Die Parameter -v und --mount haben fast die gleiche Funktion. Der einzige Unterschied besteht darin, dass Sie den Parameter --mount nur verwenden können, um ein Datenvolumen zu mounten, wenn ein Dienst ausgeführt wird.

Verwenden von schreibgeschützten Datenträgern

In manchen Fällen soll ein Datenvolumen für einen Container schreibgeschützt sein. Dies lässt sich durch Hinzufügen der Option „readonly“ erreichen:

$ docker run -d \
 --name=nginxtest \
 --mount Quelle=nginx-vol,Ziel=/usr/share/nginx/html,schreibgeschützt \
 nginx:neueste

Oder verwenden Sie den Parameter -v:

$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html:ro \
 nginx:neueste

Volume-Nutzungsszenarien

Bitte lesen Sie diesen Artikel: Zusammenfassung der Docker-Datenspeicherung

Verweise

https://docs.docker.com/storage/volumes/#share-data-among-machines

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Einführung in Container-Datenvolumes in Docker
  • Zwei Möglichkeiten zum Verwalten von Volumes in Docker
  • Löschvorgang für Docker-Volumes
  • Docker-Volumes-Dateizuordnungsmethode
  • So implementieren Sie die Docker-Volume-Montage
  • Details und Beispiele zur Docker-Volume-Nutzung
  • Docker schreibt Daten auf das Datenvolumen

<<:  Detaillierte Erläuterung von zwei Möglichkeiten zum dynamischen Ändern von CSS-Stilen in React

>>:  Detaillierte Erläuterung der JDBC-Datenbankverknüpfung und der zugehörigen Methodenkapselung

Artikel empfehlen

Detaillierte Erklärung der MySQL-Vorkompilierungsfunktion

In diesem Artikel wird die MySQL-Vorkompilierungs...

Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen

Vorwort Während des Schreibens des Codes werden w...

jQuery erzielt Ein- und Ausblendeffekte

Bevor wir jQuery verwenden, um den Ein- und Ausbl...

So verwenden Sie Spark und Scala zum Analysieren von Apache-Zugriffsprotokollen

Installieren Zuerst müssen Sie Java und Scala ins...

JavaScript zum Implementieren des Slider-Verifizierungscodes

In diesem Artikel wird der spezifische JavaScript...

Die einfachste Formularimplementierung des Flexbox-Layouts

Flexibles Layout (Flexbox) erfreut sich zunehmend...

Forschung zur Größe von Webseiten

<br />Statistiken zufolge hat sich die durch...

Centos7.5 Konfiguration Java-Umgebung Installation Tomcat Erklärung

Tomcat ist eine auf Java basierende Webserversoft...

Welche Wissenssysteme brauchen Webdesigner?

Produktdesigner sind mit komplexen und großen Fert...

Implementierung einer Login-Seite basierend auf layui

In diesem Artikelbeispiel wird der spezifische Co...

...

Beispiel für die Implementierung der Graphql-Schnittstelle in Vue

Hinweis: In diesem Artikel geht es um die grundle...