CodeGym /Kurse /Docker SELF /Mounten von Volumes

Mounten von Volumes

Docker SELF
Level 12 , Lektion 2
Verfügbar

8.1 Einführung in virtuelle Festplatten

Die Einbindung von Volumes — das ist eine der nützlichsten Features von Docker. Damit können Container einfach mit den Daten des Host-Systems arbeiten. Diese Funktion macht das Datenmanagement flexibel und bequem: Du kannst Daten langfristig speichern, zwischen Containern teilen und problemlos Backups erstellen oder Daten wiederherstellen, falls etwas schiefgeht.

Volumes in Docker — das ist eine Möglichkeit, Daten so zu speichern, dass sie unabhängig von Containern sind. Selbst wenn ein Container gelöscht wird, bleiben die in Volumes gespeicherten Informationen sicher. Volumes können an Container angebunden (eingebunden) werden, was es erlaubt, Daten separat zu speichern und wiederzuverwenden, unabhängig davon, wie oft du Container erstellst oder löschst.

Haupttypen von Volumes

  1. Anonyme Volumes (Anonymous Volumes)
    • Automatisch von Docker erstellt, wenn für einen Container kein Volume explizit angegeben ist.
    • Werden für die vorübergehende Datenspeicherung verwendet.
  2. Benannte Volumes (Named Volumes)
    • Werden von Docker erstellt und verwaltet.
    • Können an mehrere Container angebunden werden und bleiben erhalten, selbst nach deren Löschung oder Beendigung.
  3. Bind Mounts
    • Verknüpfen ein Verzeichnis auf dem Host-System mit einem Verzeichnis im Container.
    • Sind ideal für den Zugriff auf Daten des Host-Systems und praktisch während der Entwicklung.

Grundlegende Syntax des docker run Kommandos für die Einbindung von Volumes


-v <host_path>:<container_path>

Vollständige Syntax:


docker run -v <host_path>:<container_path> [OPTIONS] IMAGE [COMMAND] [ARG...]

Wichtige Parameter für die Einbindung von Volumes

1. Parameter -v oder --volume

Wird verwendet, um ein benanntes Volume oder ein Bind Mount zu erstellen.

Beispiel:

Terminal

docker run -d -v /host/data:/container/data nginx

2. Parameter --mount

Bietet eine flexiblere und detailliertere Methode zur Einbindung von Volumes und unterstützt zusätzliche Parameter.

Beispiel:

Terminal

docker run -d --mount type=bind,source=/host/data,target=/container/data nginx

8.2 Erstellen und Verwenden von Volumes

1. Benannte Volumes

Benannte Volumes werden von Docker erstellt und verwaltet. Sie sind für die langfristige Speicherung von Daten gedacht, die zwischen Neustarts oder dem Löschen von Containern erhalten bleiben sollen.

Erstellen eines benannten Volumes:

Terminal

docker volume create my_volume

Starten eines Containers mit einem eingebundenen Volume:

In diesem Beispiel wird das Volume my_volume in das Verzeichnis /data innerhalb des Containers my_container eingebunden. Alle Daten, die in /data geschrieben werden, bleiben im Volume gespeichert und sind auch nach dem Löschen des Containers verfügbar.

Terminal

docker run -d -v my_volume:/data --name my_container nginx

2. Anonyme Volumes

Anonyme Volumes werden von Docker automatisch erstellt und mit einem bestimmten Container verknüpft. Sie sind nützlich für temporäre Daten, die nach dem Löschen des Containers nicht erhalten bleiben müssen.

Starten eines Containers mit einem anonymen Volume:

In diesem Beispiel erstellt Docker automatisch ein anonymes Volume und bindet es in das Verzeichnis /data innerhalb des Containers ein.

Terminal

docker run -d -v /data --name my_container nginx

3. Gebundene Verzeichnisse

Gebundene Verzeichnisse ermöglichen es, Verzeichnisse des Host-Systems in Containern zu montieren. Dies ist praktisch für die gemeinsame Nutzung von Daten zwischen Containern und dem Host-System. Dieser Ansatz wird auch häufig in der Entwicklungsphase verwendet, wenn der Quellcode auf dem Host-System gespeichert ist.

Starten eines Containers mit einem gebundenen Verzeichnis:

In diesem Beispiel wird das Verzeichnis /host/data auf dem Host-System in das Verzeichnis /container/data innerhalb des Containers my_container eingebunden.

Terminal

docker run -d -v /host/data:/container/data --name my_container nginx

8.3 Beispiele für die Verwendung von Volumes

1. Speichern von Datenbanken

Die Verwendung von Volumes für Datenbanken hilft dabei, Daten selbst bei Neustarts und Updates des Containers zu speichern. Das ist besonders wichtig für einen zuverlässigen Betrieb in produktiven Umgebungen.

Beispiel:

In diesem Beispiel werden PostgreSQL-Daten in einem Volume db_data gespeichert, was ihre Sicherheit bei Neustarts oder dem Entfernen des Containers garantiert.

Terminal

docker volume create db_data
docker run -d -v db_data:/var/lib/postgresql/data --name postgres_container postgres

2. Gemeinsame Datennutzung zwischen Containern

Manchmal ist es notwendig, Daten zwischen mehreren Containern zu teilen. Volumes machen das ganz einfach möglich.

Beispiel:

Wir erstellen ein Volume und starten zwei Container, die dieses Volume verwenden. Beide Container erhalten Zugriff auf die Daten im Volume shared_data, was ihnen ermöglicht, Daten auszutauschen.

Terminal

docker volume create shared_data
docker run -d -v shared_data:/data --name container1 nginx
docker run -d -v shared_data:/data --name container2 nginx

3. Entwicklung und Testen

Bei der Entwicklung von Anwendungen ist es praktisch, gebundene Verzeichnisse zu verwenden, um Quellcode zwischen dem Container und der Host-Maschine zu teilen. Das ermöglicht es Entwicklern, den Code auf dem Host zu bearbeiten, während der Container direkt mit den Updates arbeitet.

Beispiel:

In diesem Beispiel wird das Verzeichnis /path/to/source auf der Host-Maschine im Verzeichnis /app innerhalb des Containers dev_container eingebunden. So kann der Container den aktuellen Quellcode direkt vom Host verwenden.

Terminal

docker run -d -v /path/to/source:/app --name dev_container node
<

8.4 Verwaltung von Volumes

Docker bietet bequeme Befehle zur Verwaltung von Volumes, mit denen man Volumes einfach erstellen, löschen und Informationen zu ihnen abrufen kann.

1. Alle Volumes anzeigen

Dieser Befehl gibt eine Liste aller verfügbaren Volumes auf der Host-Maschine aus.

Terminal

docker volume ls

2. Informationen zu einem Volume anzeigen

Mit diesem Befehl kann man detaillierte Informationen zu einem Volume my_volume erhalten: seinen Speicherort im Host-Dateisystem sowie Informationen über Container, die dieses Volume nutzen.

Terminal

docker volume inspect my_volume

3. Volume löschen

Dieser Befehl löscht das Volume my_volume. Vor dem Löschen solltest du sicherstellen, dass das Volume nicht von einem Container verwendet wird, da der Befehl sonst fehlschlägt.

Terminal

docker volume rm my_volume

8.5 Backup von Volumes

Um die Sicherheit deiner Daten zu gewährleisten, ist es wichtig, Backups von Volumes erstellen und bei Bedarf wiederherstellen zu können.

1. Backup eines Volumes

In diesem Beispiel wird der Inhalt des Volumes my_volume in eine Datei my_volume_backup.tar.gz archiviert, die im Verzeichnis /backup auf der Host-Maschine gespeichert wird.

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar czf /backup/my_volume_backup.tar.gz /volume

2. Wiederherstellung eines Volumes

Dieses Beispiel stellt den Inhalt des Volumes my_volume aus einem Backup wieder her, das in der Datei my_volume_backup.tar.gz gespeichert ist.

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar xzf /backup/my_volume_backup.tar.gz -C /volume
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION