Website-Suche

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.

Verwandte Artikel