Datenverwaltung mit Volume in Docker (persönliches Memorandum)

Übersicht über die Datenverwaltung in Docker

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.

Datenverwaltung mit Volume

Für Linux

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.

Grundlegende Befehle zur Datenträgerverwaltung

-#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

Detaillierte Bestätigung des Volumens

-#Docker-Volume Überprüfen Sie den Volume-Namen
$ docker valume inspect my-vol

Lautstärke löschen

-#Docker-Volume rm Volume-Name
$ docker valume rm my-vol

Montieren Sie das Volumen auf den Behälter.

Mit -v montieren

-# 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.

Stellen Sie eine Verbindung zum Container her und überprüfen Sie die Volumeninformationen.

$ 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.

Versuchen Sie, die Datei in / app hochzuladen

-#Gehe zur App
# cd app
-#Erstellen einer "hogehoge" -Datei
# touch hogehoge
# ls
hogehoge

Hängen Sie "mount -c1" in einen anderen Container ein und prüfen Sie, ob dieselbe Datei vorhanden ist.

Mit --mount montieren.

-# 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.

Stellen Sie das Volumen ein, wenn Sie den Behälter starten

-# 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.

So schalten Sie das Volume schreibgeschützt ein

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".

So schalten Sie das Volume schreibgeschützt mit -v ein

-# 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

Datenverwaltung mit Volume in Docker (persönliches Memorandum)
Datenverwaltung mit Docker's bindmount und tmpfs (persönliches Memorandum)
Erstellung einer Datenanalyseumgebung mit Docker (persönliches Memorandum)
Erstellen einer CICD-Pipeline mit Docker (persönliches Memorandum)
Docker-Netzwerk (persönliches Memorandum)
Erstellen eines Docker-Hosts in AWS mit Docker Machine (persönliches Memorandum)
Existiert mit der Spezifikation in Spring Data JPA
[Persönlich] JUnit5-Memorandum-Memo (in Arbeit)
Docker Memorandum
Erhöhen Sie die Lautstärke, wenn Sie Docker mit vscode verwenden.
Aufbau einer Django-Entwicklungsumgebung mit Docker-Compose (persönliches Memorandum)
Technisches Memorandum (Docker)
Docker-Befehlsmemorandum