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

Detaillierte Erläuterung gängiger Methoden von JavaScript Array

Inhaltsverzeichnis Methoden, die das ursprünglich...

Tutorial und Praxis zu den virtuellen Speichereinstellungen unter Linux

Was ist virtueller Speicher? Zunächst werde ich e...

HTML Tutorial: Sammlung häufig verwendeter HTML-Tags (4)

Diese eingeführten HTML-Tags entsprechen nicht un...

Ubuntu Docker-Installation in VMware (Containererstellung)

1. Mindmap 2. So bauen Sie einen Container 2.1 Vo...

Die vollständige Liste der MIME-Typen

Was ist ein MIME-TYP? 1. Zunächst müssen wir vers...

Verzeichnisberechtigungen beim Erstellen eines Containers mit Docker

Als ich gestern ein Projekt schrieb, musste ich d...

So finden Sie die my.ini-Konfigurationsdatei in MySQL 5.6 unter Windows

Machen Sie sich eine Notiz, damit Sie später dara...

Implementierungsbeispiel für die Bereitstellung von Docker rocketmq

Inhaltsverzeichnis Vorbereitung Bereitstellungspr...

Implementierung der privaten Docker-Bibliothek

Die Installation und Bereitstellung eines private...

MySQL-Startfehlerproblem und Szenarioanalyse

1. Komplettlösung 1. Problemanalyse und -lokalisi...

Diskussion über Web-Nachahmung und Plagiat

Einige Monate nachdem ich 2005 in die Branche eing...

Diskussion über CSS-Stilpriorität und kaskadierende Reihenfolge

Im Allgemeinen : [1 wichtige Flagge] > [4 beson...

Zusammenfassung der HTML-Hack-Tags im IE-Browser

Code kopieren Der Code lautet wie folgt: <!--[...