Der Unterschied zwischen „Docker-Volume“ und „Mount“ besteht darin: „Docker-Volume“ ist deklarativ, „Docker Engine“ selbst belegt ein bestimmtes Verzeichnis im System und Docker weist dem Volume standardmäßig einen Pfad unter dem belegten Pfad zu; und „Mounting“ belegt keinen Pfad als Mountpunkt.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-1.13.1-Version, Dell G3-Computer.
Wenn mehrere Container über einen längeren Zeitraum hinweg auf dasselbe Datenverzeichnis zugreifen müssen oder wenn Daten im Container beibehalten werden müssen (z. B. eine Datenbank). Ich habe immer die Mount-Verzeichnisform (bind mounts) verwendet, um ein Verzeichnis auf dem Host in ein bestimmtes Verzeichnis im Container zu mounten. Diese Methode kann das Problem lösen, weist jedoch immer einige Mängel auf:
Und diese Probleme können durch die Verwendung von Volume gelöst werden. Vergleichen wir zunächst Bind-Mounts und Docker-Volumen und sehen wir dann, wie Volume das Problem von Bind-Mounts löst. Schauen wir uns zunächst ein Bild an:
Dieses Bild zeigt, dass Bind Mount und Volume tatsächlich das Dateisystem des Hosts verwenden. Der Unterschied besteht darin, dass sich das Volume im von Docker verwalteten Verzeichnis befindet selbst. Es gibt also keine durch Berechtigungen verursachten Mount-Probleme, und der Verzeichnispfad wird von Docker selbst verwaltet, sodass keine Notwendigkeit besteht, unterschiedliche Pfade auf verschiedenen Servern anzugeben , nicht alle, wie weiter unten erläutert wird) Pflege?). Werfen wir als Nächstes einen Blick auf die verschiedenen Verwendungsmöglichkeiten von Bind Mount und Volume.
1. Wenn der Container auf verschiedenen Servern bereitgestellt wird, muss der Pfad entsprechend dem tatsächlichen Festplatten-Mounting-Verzeichnis geändert werden.
Zum Beispiel:
In Linux-Systemen verwenden wir häufig „/var/someDir“ als Mount-Verzeichnis;
Auf dem Mac ist /var/ jedoch kein echtes Verzeichnis. Wir verwenden /var/ nicht
In Windows-Systemen werden Sie von Windows-Benutzern gefragt: /var / Was ist das? C-Laufwerk und D-Laufwerk sind die vernünftigste Unterteilung ~~
Zusätzlich zur Mount-Methode in Docker gibt es auch ein Volume, das Daten speichern kann. Es ist etwas peinlich, dies zu erwähnen. Nachdem ich Docker so lange verwendet habe, habe ich das Mounten immer als Volume betrachtet, aber das ist nicht meine Schuld . Die Docker-Compose-Datei befindet sich im Volume-Abschnitt. Es gibt kein Problem beim Schreiben der Zuordnungsbeziehung zwischen dem Container und dem Host-Mount-Pfad, aber das war schon immer ein Missverständnis. . (Ausgefallene Schuldzuweisungen?) Tatsächlich sind „Mounting“ und „Docker Volume“ nicht dasselbe. Es gibt einen gewissen Unterschied, und Docker Engine selbst belegt ein bestimmtes Verzeichnis im System ., Linux ist im Allgemeinen „/var/lib/docker“ und kann unter Mac und Windows angepasst werden. Wenn wir ein Volume deklarieren, weist Docker dem Volume standardmäßig einen Pfad unter dem belegten Pfad zu, zum Beispiel:Title
Relativ zum Mounten ist das Volume ein Pfad, der von Docker Engine in seinem eigenen „Revier“ zugewiesen wird. as Der Einhängepunkt und die Berechtigungen der eigenen Site müssen übersichtlich angeordnet sein. Daher sind die oben genannten Probleme beim Mounten des Hostpfads gelöst. ?
Wenn Sie es verwenden, verwenden Sie einfach den Volume-Namen anstelle des Host-Pfadnamens. Angenommen, wir haben oben ein Volume mit dem Namen „test_vol“ erstellt:
Achtung!!
Hier muss erklärt werden, dass eine einzelne Dateimethode wie eine Konfigurationsdatei nicht für die Verwendung von Volume geeignet ist. Obwohl die Bind-Mount-Methode ebenfalls gelöst werden kann, ist die Konfigurationsdatei einige vertrauliche Informationen wie Datenbankkennwörter, die beste Methode is Verwendet tmpfs.
Das Volumen von Kubernetes spiegelt auch ein ähnliches Design wider. Obwohl subPath das Problem der Konfigurationsdatei-Einbindung lösen kann, ist die Verwendung von configMap die beste Möglichkeit.
Empfohlenes Lernen: „Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Docker-Volume und Mount?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!