Zwei Möglichkeiten zum Verwalten von Volumes in Docker

Zwei Möglichkeiten zum Verwalten von Volumes in Docker

Im vorherigen Artikel habe ich die Grundkenntnisse von Docker vorgestellt: wie man ein lokales Verzeichnis mountet. Heute werde ich zwei Möglichkeiten zum Verwalten von Datenvolumina in Docker vorstellen. Die spezifischen Inhalte sind wie folgt:

Was ist ein Datenvolumen

Datenvolumen: Ein Volume ist eine bestimmte Datei oder ein bestimmter Ordner, der in einem oder mehreren Containern vorhanden ist. Dieses Verzeichnis existiert auf dem Hostcomputer in einer vom Union-Dateisystem unabhängigen Form und erleichtert die gemeinsame Nutzung und Persistenz von Daten.

Warum Datenvolumen nutzen?

Probleme mit dem mehrschichtigen Docker-Dateisystem:
Docker-Images bestehen aus einer Reihe schreibgeschützter Ebenen. Beim Starten eines Containers lädt Docker alle schreibgeschützten Ebenen des Images und fügt oben eine Lese-/Schreibebene hinzu. Durch dieses Design kann Docker die Effizienz der Imageerstellung, -speicherung und -verteilung verbessern und so Zeit und Speicherplatz sparen. Allerdings gibt es auch die folgenden Probleme:
1. Schlechte Leistung.
2. Daten zwischen mehreren Containern können nicht geteilt werden.
3. Der Lebenszyklus ist der gleiche wie der des Containers. Wenn Sie einen Container löschen, gehen die vom Container generierten Daten verloren. Vorteile des Datenvolumen-Mechanismus:
1. Mounten Sie es auf dem Host und umgehen Sie dabei das geschichtete Dateisystem.
2. Volumes können zwischen verschiedenen Containern geteilt und wiederverwendet werden.
3. Gleiche Leistung wie die Hostfestplatte.
4. Vorgänge an den Daten im Datenträger wirken sich nicht auf das Image selbst aus.
5. Der Lebenszyklus eines Volumes ist unabhängig vom Lebenszyklus eines Containers. Selbst wenn der Container gelöscht wird, bleibt das Volume bestehen. Ein Volume, das von keinem Container verwendet wird, wird von Docker nicht gelöscht.
Docker bietet eine Volumetreiberschnittstelle. Durch die Implementierung dieser Schnittstelle können wir verschiedene Volumespeicherunterstützungen für Docker-Container bereitstellen. Derzeit ist standardmäßig der lokale Volumetreiber implementiert, der das Dateisystem des Hosts verwendet, um Volume für Docker-Container bereitzustellen.

Zwei Möglichkeiten zur Verwaltung von Datenmengen

Das Wesentliche des Docker-Volumes ist ein spezielles Verzeichnis im Container. Während des Containererstellungsprozesses mountet Docker das angegebene Verzeichnis auf dem Host (ein Verzeichnis mit dem Namen der Volume-ID oder ein angegebenes Host-Verzeichnis) in das angegebene Verzeichnis im Container (mithilfe der Bing-Mount-Methode), sodass das Host-Verzeichnis nach Abschluss des Mountens mit dem Zielverzeichnis im Container übereinstimmt.

1. Halterung binden

Bind Mount dient zum Mounten des Verzeichnisses oder der Datei auf dem Host in den Container. Intuitiv und effizient zu bedienen, leicht verständlich.
Verwenden Sie die Option -v , um den Einhängepfad im Format <host path>:<container path> anzugeben
#Der erste Teil ist der Pfad, der tatsächlich auf dem Hostcomputer vorhanden ist: der zweite Teil ist der Pfad im Container

Führen Sie einen Container mit dem Nginx-Image im Hintergrund aus und mounten Sie das /data-Verzeichnis des Hosts in das Verzeichnis des Containers /usr/share/nginx/html [root@server1 ~]# docker run -d --name demo -v /data:/usr/share/nginx/html nginx 

Bildbeschreibung hier einfügen

Wechseln Sie zum Ausführen in den Vordergrund und überprüfen Sie den Inhalt der angegebenen Verzeichnisse des Hosts bzw. des Containers. Sie sind identisch. Dies liegt daran, dass diese Mount-Methode der Mount-Methode entspricht, die wir normalerweise verwenden. Die Originaldaten werden ausgeblendet und durch die Daten des Hostcomputers ersetzt.
##Es gibt so viele Dinge im /data-Verzeichnis, weil das Standarddatenverzeichnis von Docker /data ist

[root@server1 ~]# docker exec -it demo bash 

Bildbeschreibung hier einfügen

Die Standardberechtigungen für die Bind-Einbindung sind Lesen/Schreiben (rw), und Sie können bei der Einbindung schreibgeschützt (ro) angeben.

Der mit der Option -v angegebene Pfad wird beim Mounten automatisch erstellt, falls er nicht existiert.
docker run -it --name vm1 \ /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash

2. Von Docker verwaltetes Volume

Beim Bind-Mount muss der Pfad zum Host-Dateisystem angegeben werden, was die Portabilität einschränkt.
Für das von Docker verwaltete Volume ist keine Angabe der Mount-Quelle erforderlich. Docker erstellt automatisch ein Datenvolume-Verzeichnis für den Container. Die erstellten Standarddatenträgerverzeichnisse befinden sich alle in /var/lib/docker/volumes.
Wenn die Bereitstellung auf ein vorhandenes Verzeichnis im Container verweist, werden die Originaldaten im Container auf das Volume kopiert.
So erstellen Sie ein Volume:

[root@server1 ~]# docker volume create webdata #Erstellen Sie ein Volume mit dem Namen webdata[root@server1 ~]# docker rm -f demo #Löschen Sie das oben erstellte Volume[root@server1 ~]# docker run -d --name demo -v webdata:/usr/share/nginx/html nginx		
#Mounten Sie das Webdatenvolume in das Verzeichnis /usr/share/nginx/html im Container und führen Sie einen Container aus

Mounten Sie das erstellte Webdatenvolume in das Verzeichnis /usr... des Containers.
Bildbeschreibung hier einfügen
Geben Sie das von Docker standardmäßig erstellte Datenträgerverzeichnis ein, um den Inhalt des Datenträgers anzuzeigen. Wir können sehen, dass oben nur der Datenträger erstellt und nichts geschrieben wurde. Der Inhalt des Datenträgers ist jedoch darauf zurückzuführen, dass sich beim Mounten etwas im angegebenen Verzeichnis im Container befand und daher kopiert wurde.
Bildbeschreibung hier einfügen
Wir verwenden das Nginx-Image, um den Container auszuführen. Der Zugriff darauf ist problemlos möglich.
Bildbeschreibung hier einfügen
Wenn beim Mounten die Mount-Quelle nicht angegeben wird, erstellt Docker automatisch ein zufälliges Volume mit einem langen Dateinamen.

[root@server1 ~]# docker rm -f demo
[root@server1 ~]# docker run -d --name demo -v /usr/share/nginx/html nginx
67ab13a7b24c19c53f4ce117136b9d0e4dec93c615a0192ead919d10e6c2acae 

Bildbeschreibung hier einfügen
Wir verwenden den Befehl docker inspect demo, um das Quellverzeichnis des Volumes anzuzeigen
Bildbeschreibung hier einfügen
Nachdem Sie den Pfad erhalten haben, können Sie den Inhalt des Verzeichnisses anzeigen

ls /var/lib/docker/volumes/2ca22fd769e4b7b6f5a02dd96fe8d47a6df5578074c0d340ced3ab33b25456ca/_data 

Bildbeschreibung hier einfügen

Vergleich zwischen Bind-Mount und Docker-verwalteten Volumes

Ähnlichkeiten: Beides sind Pfade im Host-Dateisystem.
Die Unterschiede sind in der Abbildung dargestellt:
Bildbeschreibung hier einfügen

Damit ist dieser Artikel über zwei Möglichkeiten zur Verwaltung von Volumes in Docker abgeschlossen. Weitere Informationen zu Docker-Volumes finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Einführung in Container-Datenvolumes in Docker
  • Löschvorgang für Docker-Volumes
  • Docker-Volumes-Dateizuordnungsmethode
  • So implementieren Sie die Docker-Volume-Montage
  • Detaillierte Erklärung der Docker-Datenspeichervolumes
  • Details und Beispiele zur Docker-Volume-Nutzung
  • Docker schreibt Daten auf das Datenvolumen

<<:  Detaillierte Erklärung zur Verwendung der Funktionen IF(), IFNULL(), NULLIF() und ISNULL() in MySQL

>>:  Mehrere Möglichkeiten, das gepunktete Kästchen zu entfernen, das beim Klicken auf einen Link angezeigt wird

Artikel empfehlen

Löschen Sie den Image-Vorgang von „none“ in Docker-Images

Da ich normalerweise den Befehl „Docker Build“ ve...

CSS3 beschleunigt und verzögert Übergänge

1. Verwenden Sie die Geschwindigkeitskontrollfunk...

Schreiben eines Schere-Stein-Papier-Spiels in JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

Ein kurzer Vortrag über JavaScript Sandbox

Vorwort: Apropos Sandboxen: Wir denken vielleicht...

Tutorial zur Installation von MySQL 5.7.9 mit RPM-Paket unter CentOS 7

Aufgezeichnetes MySQL 5.7.9-Installationstutorial...

So implementieren Sie die King of Glory-Personal-Ladeseite mit CSS3

Wer King of Glory gespielt hat, sollte mit der Wi...

Implementierung einer coolen 3D-Würfeltransformationsanimation in CSS3

Ich liebe das Programmieren, es macht mich glückl...

Zusammenfassung der Wissenspunkte des Nodejs-Clustermoduls und Anwendungsbeispiele

Der Interviewer wird Sie manchmal fragen: „Sagen ...

So setzen Sie das Root-Passwort in Linux mysql-5.6 zurück

1. Überprüfen Sie, ob der MySQL-Dienst gestartet ...

Detaillierte Analyse des Explain-Ausführungsplans in MySQL

Vorwort Das Schreiben effizienter SQL-Anweisungen...

Detaillierte Erläuterung des vite2.0-Konfigurationslernens (Typescript-Version)

einführen Die ursprünglichen Worte von You Yuxi. ...

JavaScript implementiert die Kontrollkästchenauswahlfunktion

In diesem Artikelbeispiel wird der spezifische Ja...