Docker-Volumes anhand von Beispielen erklären
Im Fall von Docker werden die Daten im Container gespeichert. Und wenn wir den Container entfernen, gehen Daten verloren. In dieser Anleitung erfahren Sie, wie Sie Docker-Volumes erstellen, wie Sie sie an die Container anhängen und wie Sie dasselbe Volume für die Datenspeicherung auf zwei oder mehr Container verteilen können.
Wenn Sie die Docker-Grundlagen noch nicht kennen, lesen Sie die folgende Anleitung:
- Erste Schritte mit Docker
Warum benötigen wir Volumes für Docker?
- Beim Löschen von Containern werden Volumes nicht gelöscht.
- Befestigen oder lösen Sie Volumen an den Behältern.
- Teilen Sie Volumes (Speicher/Daten) zwischen verschiedenen Containern.
- Entkopplung von Containern und Lagerung.
- Speichern Sie das Volume auf einem Remote-Host oder einer Cloud.
Wir können sowohl die Daten als auch den Container logisch aufteilen. Wir können die Daten auf eine Weise bewahren, die bei einer Entfernung
Im Container sind dann auch unsere Daten vorhanden. Nach der Zerstörung des Containers können wir das Volumen sowohl an vorhandene als auch an neue Container anschließen.
Erste Schritte mit Docker-Volumes
Der Befehl Docker Volume zeigt die Details der Volume-Befehle an, mit denen wir ein Volume erstellen, die detaillierten Daten des Volumes überprüfen, die verfügbaren Volumes auflisten und die Volumes entfernen können.
docker volume
Hilfebereich des Befehls „Docker Volume“ anzeigen
Docker-Volumes erstellen
Die Syntax zum Erstellen eines Docker-Volumes lautet:
docker volume create <volume_name>
Beispiel :
docker volume create devops_volume
Der obige Befehl erstellt ein Docker-Volume mit dem Namen devops_volume.
Docker-Volume erstellen
Docker-Volumes auflisten
Führen Sie Folgendes aus, um alle erstellten Docker-Volumes aufzulisten:
docker volume ls
Docker-Volumes auflisten
Überprüfung von Docker-Volumes
Der Befehl Docker Volume Inspect liefert Ihnen Details zur Erstellung des Volumes, zum Speicherort, zum Namen und zum Umfang.
Syntax :
docker volume inspect <volume_name>
Lassen Sie mich Ihnen die Details eines Docker-Volumes namens devops_volume zeigen.
docker volume inspect devops_volume
Überprüfen Sie die Docker-Volumes
Erstellen von Containern mit dem daran angeschlossenen Volume
Syntax :
docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>
Beispiel :
docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox
Erstellen Sie einen Container mit dem daran befestigten Volume
Um zu überprüfen, ob der Container erstellt wurde oder nicht, verwenden Sie den Befehl docker ps -a:
Ausgabe des Befehls „docker ps“.
Startcontainer
Um den neu erstellten Container zu starten, zum Beispiel myBusyBox1, führen Sie Folgendes aus:
docker container start myBusyBox1
Starten Sie Docker-Container
Wie Sie im obigen Screenshot sehen, wurde der Container myBusyBox1 vor 8 Minuten erstellt und vor 6 Sekunden gestartet.
Kopieren von Dateien zwischen Containern von einem gemeinsam genutzten Volume
Lassen Sie uns ein Szenario erstellen, in dem wir die Datei in einem Container am freigegebenen Speicherort erstellen und versuchen, von einem anderen Container aus auf die Datei zuzugreifen.
Wir haben bereits einen Container namens myBusyBox1 erstellt. Lassen Sie uns eine weitere erstellen, zum Beispiel myBusyBox2.
Erstellen Sie einen Container
Jetzt haben wir zwei Container im laufenden Zustand, myBusyBox1 und myBusyBox2.
Stellen Sie eine Verbindung zum ersten Container her und erstellen Sie eine Datei im Ordner /app.
docker exec -it myBusyBox1 sh
Der obige Befehl führt Sie in den Container.
Erstellen Sie dann einen neuen Ordner mit dem Namen devops im Ordner /app und verlassen Sie den ersten Container.
Mit dem ersten Container verbinden
Kopieren Sie nun eine Datei, zum Beispiel index.html, vom lokalen System an den Speicherort /app/devops/ des myBusyBox1-Containers.
docker container cp index.html myBusyBox1:/app/Devops
Stellen Sie nun eine Verbindung zu einem anderen zweiten Container her, d. h. myBusyBox2, und überprüfen Sie, ob im Ordner /app/devops die Datei index.html vorhanden ist oder nicht.
docker exec -it myBusyBox2 sh
Mit zweitem Container verbinden
Aus dem obigen Screenshot geht hervor, dass sich beide Container das gleiche Volumen teilen.
Wir können den Mountpoint-Standort des Volumes mit dem Befehl docker volume inspect wie folgt überprüfen:
docker volume inspect devops_volume
Docker-Inspect-Volume-Befehl
Wie Sie sehen, ist der Mountpoint-Speicherort /var/lib/docker/volumes/devops_volume/_data.
Gehen wir zum Mountpoint-Speicherort und prüfen, ob die kopierte Datei verfügbar ist oder nicht.
Docker-Volumes-Mountpoint
Am Mountpoint-Speicherort haben wir dieselbe Datei gefunden.
Docker-Volumes löschen
Die Syntax zum Löschen eines Volumes lautet:
docker volume rm <volume_name>
Löschen wir das Volume mit dem Namen devops_volume.
docker volume rm devops_volume
Löschen Sie ein Docker-Volume
Im obigen Screenshot versuchen wir, das Volume zu löschen, können es aber nicht löschen, da das Volume bereits verwendet wird. Zuerst müssen wir den Container zerstören und Volumen freigeben. Und dann können wir das Volume löschen.
Entfernen Sie dazu zunächst alle laufenden Container mit dem folgenden Befehl:
docker rm –f $(docker ps -aq)
Und dann das Volume entfernen:
docker volume rm devops_volume
Docker-Volumes löschen
Alle Volumes auf einmal löschen
Mit dem Befehl docker rm können wir jeweils ein Volume entfernen. Wenn wir mehrere Volumes haben und alle Volumes löschen möchten, müssen wir den Befehl prune verwenden.
Lassen Sie uns ein paar Bände erstellen:
Docker-Volumes erstellen
Löschen Sie nun alle Docker-Volumes auf einmal mit dem folgenden Befehl:
docker volume prune
Löschen Sie alle Docker-Volumes auf einmal
Sehen? Wir haben alle Bände auf einmal gelöscht.
Empfohlene Lektüre:
- Erklärung der Docker-Netzwerkkonzepte
- So aktualisieren Sie laufende Docker-Container automatisch
- ctop – Ein Befehlszeilen-Überwachungstool für Linux-Container
- Portainer – Eine einfachste Möglichkeit, Docker zu verwalten
- PiCluster – Eine einfache, webbasierte Docker-Verwaltungsanwendung
- Dockly – Docker-Container vom Terminal aus verwalten
Über den Autor:
Dhruv Tiwari ist ein DevOps-Ingenieur, der es liebt, Dinge zu automatisieren, mit Linux in großem Maßstab zu arbeiten und von dem Tag träumt, an dem Systeme intelligent genug sind, dass sie sich nie mehr bei einer Linux-Box anmelden müssen. Reise von CI/CD vom Quellcode über die Codebereitstellung bis zur Produktion.