Die vom Container verarbeiteten dynamischen Daten können in der Lese- / Schreibschicht des laufenden Containers abgelegt werden, haben jedoch einige Nachteile. Wenn beispielsweise ein Container gelöscht wird, verschwinden auch die Daten im Container. Es kann nicht zwischen Containern geteilt werden. Die Schreibleistung ist im Vergleich zum Schreiben in Daten auf dem Host ebenfalls schlecht.
Erstellt unter / var / lib / docker / volume. Es wird automatisch auf dem Container montiert. Das erstellte Volume kann benannt und verwaltet sowie auf mehreren Containern bereitgestellt werden. Darüber hinaus können gemeinsame Dateien von mehreren Containern gelesen und geschrieben werden. Das Volume verschwindet nicht, wenn der Container gelöscht wird, und verschwindet erst, wenn es explizit gelöscht wird. Da das Verschieben von Dateien nicht empfohlen wird, ist dies eine Funktion zum Verwalten von Dateien im Container.
-#Docker, um Umweltunterschiede zu vermeiden-Starten Sie eine virtuelle Maschine mit dem Maschinenbefehl und arbeiten Sie daran.
% docker-machine create vol-test
-#SSH-Verbindung zum erstellten Host
% docker-machine ssh vol-test
-#Docker-Volume Erstellen Sie einen neuen Volume-Namen
$ docker volume create my-vol
-#Überprüfen Sie das vorhandene Volume
$ docker volume ls
-#In dem von Docker verwalteten Bereich auf dem Host-Computer "my-Ein Volume namens "vol" wird erstellt.
DRIVER VOLUME NAME
local my-vol
-#Docker-Volume Überprüfen Sie den Volume-Namen
$ docker valume inspect my-vol
-#Docker-Volume rm Volume-Name
$ docker valume rm my-vol
-# docker run -itd --Name Containername-v Datenträgername:Mount-Punkt-Containerquelle
$ docker run -itd —-name mount-c1 -v vol1:/app nginx:latest
Geben Sie im Argument -v den Datenträgernamen und den Pfad an, der auf dem durch einen Doppelpunkt getrennten Container bereitgestellt werden soll. Diesmal lautet der Datenträgername ** "vol1" **, und da er nicht vorhanden ist, wird er als neuer Datenträger erstellt. Der Einhängepunkt im Container ist ** "/ app" **. Sie können sehen, dass "vol1" mit dem Befehl docker volume ls erstellt wird. Sie können das bereitgestellte Volume überprüfen, indem Sie die Details des Containers mit dem Befehl docker inspect überprüfen.
$ docker exec -it mount-c1 /bin/bash
# df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 18714000 189496 17535376 2% /
tmpfs 65536 0 65536 0% /dev
tmpfs 504516 0 504516 0% /sys/fs/cgroup
shm 65536 0 65536 0% /dev/shm
/dev/sda1 18714000 189496 17535376 2% /app
tmpfs 504516 0 504516 0% /proc/asound
tmpfs 504516 0 504516 0% /proc/acpi
tmpfs 504516 0 504516 0% /proc/scsi
tmpfs 504516 0 504516 0% /sys/firmware
Sie können sehen, dass "/ app" gemountet ist.
-#Gehe zur App
# cd app
-#Erstellen einer "hogehoge" -Datei
# touch hogehoge
# ls
hogehoge
-# docker run -itd --Name Containername--mount source=Datenträgername,target=Mount-Punkt-Containerquelle
$ docker run -itd —-name mount-c2 —-mount source=vol1,target=/app nginx:latest
Geben Sie beim Mounten mit --mount das Volume der Mount-Quelle im Argument der Quelle und das Mount-Ziel im Argument des Ziels an. Die Operation ist dieselbe wie -v.
$ docker exec -it mount-c2 /bin/bash
# ls -l /app
Sie können die Hogehoge-Datei sehen. Wenn Sie auf diese Weise dasselbe Volume auf mehreren Containern bereitstellen, können Dateien gemeinsam genutzt werden. Diese Methode kann jedoch nur Container gemeinsam nutzen, die auf demselben Host ausgeführt werden, nicht zwischen verschiedenen Hosts.
-# docker run -itd --Name Containername--mount source=Datenträgername,destination=Mount-Punkt-Containerquelle
$ docker run -itd —-name mount-c3 —-mount source=copy-vol,destination=/etc/nginx nginx
Ein Volume namens "copy-vol" wurde erstellt und in "/ etc / nginx" gemountet. Die Einstellungsdatei und das Verzeichnis von "etc / nginx" werden in Volume kopiert.
$ docker volume inspect copy-vol
Sie können den Einhängepunkt sehen, indem Sie sich die Details von Volume ansehen. Wenn ein neues Volume erstellt und bereitgestellt wird, werden die bereits vorhandenen Dateien kopiert und sind jetzt auf dem Volume vorhanden. Ein weiteres Bereitstellungsmuster besteht darin, ein bereits vorhandenes Volume bereitzustellen. Die Dateien auf dem Container werden niemals kopiert. Bis zum letzten wird das vorhandene Volume am angegebenen Mount-Punkt bereitgestellt, und die vorhandenen Dateien, die auf dem Container vorhanden waren, werden vom Mount-Volume ausgeblendet und werden unsichtbar.
Sie können für jeden Container festlegen, ob er schreibgeschützt oder schreibgeschützt sein soll. So schalten Sie mit dem Mount-Flag als schreibgeschützt ein.
-# docker run -itd --Name Containername--mount source=Datenträgername,destination=Einhängepunkt,schreibgeschützte Containerquelle
$ docker run -itd —-name mount-c4 -—mount source=copy-vol,destination=/etc/nginx,readonly nginx
Geben Sie "schreibgeschützt" durch "," Kommas getrennt an.
$ docker inspect mount-c4
Sie können sehen, dass "RW": false in "Mounts".
-# docker run -itd --Name Containername-v Datenträgername:Einhängepunkt:ro Containerquelle
$ docker run -itd —-name mount-c5 -v copy-vol:/etc/nginx:ro nginx
Sie kann schreibgeschützt sein, indem Sie den Datenträgernamen festlegen: Einhängepunkt: ro.
Recommended Posts