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

Ein vollständiges Tutorial zur Verwendung der Axios-Kapselung in Vue

Vorwort Heutzutage wird in Projekten häufig die A...

Was ist nach der Installation von Ubuntu 20.04 zu tun (Anleitung für Anfänger)

Ubuntu 20.04 wurde veröffentlicht und bringt viel...

Lassen Sie uns darüber sprechen, was das URL-Objekt von JavaScript ist

Inhaltsverzeichnis Überblick Hash-Eigenschaften G...

Eine kurze Analyse des HTML-Space-Codes

Wie gut kennen Sie sich mit HTML aus? Wenn Sie jet...

Anfänger verstehen das MySQL-Deadlock-Problem anhand des Quellcodes

Nach vielen schwierigen Einzelschritt-Debuggings ...

Docker- und Portainer-Konfigurationsmethoden unter Linux

1. Installieren und verwenden Sie Docer CE Dieser...

Detaillierte Erklärung der .bash_profile-Datei im Linux-System

Inhaltsverzeichnis 1. Umgebungsvariable $PATH: 2....

Detaillierte Erklärung zur Verwendung des MySQL-Sicherungsskripts mysqldump

In diesem Artikel wird das MySQL-Sicherungsskript...

Verwenden Sie CSS, um einen kreisförmigen Welleneffekt zu erzielen

Auf Mobilgeräten sehe ich häufig kreisförmige Wel...

Detaillierte Erklärung der verfügbaren Umgebungsvariablen in Docker Compose

Mehrere Teile von Compose befassen sich in irgend...

Warum der CSS-Attributwert clear:right im Detail nicht funktioniert

Die Verwendung der Clear-Eigenschaft zum Löschen v...