3.1 Grundlagen des Mountens von Volumes
Das Mounten von Volumes in Container ist eine der Schlüssel-Funktionen von Docker, die es erlaubt, Daten außerhalb von Containern zu speichern, um deren langfristige Speicherung und Verfügbarkeit sicherzustellen. Volumes können für verschiedene Zwecke verwendet werden, einschließlich der Speicherung von Konfigurationsdateien, Datenbanken, Logs und anderen wichtigen Daten. In dieser Vorlesung schauen wir uns an, wie man Volumes in Container mountet, und geben praktische Beispiele.
Grundlagen des Mountens von Volumes
Wie wir bereits gesagt haben, existieren Volumes unabhängig vom Lebenszyklus eines Containers. Sie werden in einem speziellen Verzeichnis auf der Host-Maschine gespeichert und können mit jedem Container verbunden werden.
Befehl zum Mounten von Volumes
Volumes werden in Container mithilfe der Parameter -v
oder --mount
beim Starten eines Containers gemountet.
3.2 Parameter -v
Beispiele für die Verwendung des Parameters -v
1. Ein Volume in einen Container mounten
Ein Volume erstellen und es in einen Container mounten:
Volume erstellen:
docker volume create my_volume
Container mit gemountetem Volume starten:
docker run -d --name my_container -v my_volume:/app nginx
In diesem Beispiel wird das Volume my_volume
in das Verzeichnis /app
des Containers my_container
gemountet.
2. Mehrere Volumes mounten
Du kannst mehrere Volumes in einen Container mounten:
docker run -d --name my_container -v volume1:/app/data -v volume2:/app/logs nginx
In diesem Beispiel wird das Volume volume1
in das Verzeichnis /app/data
gemountet, und das Volume volume2
— in das Verzeichnis /app/logs
.
3.3 Parameter --mount
Der Parameter --mount
bietet eine detailliertere Möglichkeit, Volumes einzubinden, mit der Option, verschiedene Parameter anzugeben.
1. Einbindung eines Volumes mit --mount
docker run -d --name my_container --mount source=my_volume,target=/app nginx
Dieses Beispiel ist ähnlich wie das vorherige Beispiel mit -v
, verwendet jedoch eine ausführlichere Syntax.
2. Einbindung mit zusätzlichen Parametern
docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx
In diesem Beispiel wird das Volume im Nur-Lese-Modus (readonly
) eingebunden.
3.4 Praktische Beispiele
Beispiel 1: Verwendung von Volumes für eine Datenbank
Erstellen und Verwenden eines Volumes zum Speichern von Daten der Datenbank.
Volume erstellen:
docker volume create db_data
Starten eines Datenbank-Containers mit gemountetem Volume:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
In diesem Beispiel werden die Daten der PostgreSQL-Datenbank im Volume db_data
gespeichert.
Beispiel 2: Verwendung von Volumes für Konfigurationsdateien
Erstellen eines Volumes zum Speichern von Konfigurationsdateien und Mounten in einen Container.
Volume erstellen:
docker volume create config_data
Kopieren von Konfigurationsdateien ins Volume:
docker run --rm -v config_data:/app busybox sh -c "echo 'Konfigurationsdaten' > /app/config.txt"
Starten eines Containers mit einem Volume für Konfigurationsdateien:
docker run -d --name my_app -v config_data:/app/config nginx
In diesem Beispiel werden die Konfigurationsdateien im Volume config_data
gespeichert, das ins Verzeichnis /app/config
des Containers gemountet wird.
Beispiel 3: Container-Logs
Erstellen eines Volumes zum Speichern der Logs des Containers und Mounten in den Container.
Volume erstellen:
docker volume create logs_data
Starten eines Containers mit einem gemounteten Volume für Logs:
docker run -d --name my_app -v logs_data:/var/log/nginx nginx
In diesem Beispiel werden die Logs von Nginx im Volume logs_data
gespeichert.
3.5 Überprüfung des Inhalts von Volumes
Du kannst den Inhalt eines Volumes überprüfen, indem du ihn in einen temporären Container einhängst.
Beispiel
Start eines temporären Containers mit gemountetem Volume:
docker run --rm -v my_volume:/app busybox ls /app
Dieses Beispiel zeigt den Inhalt des Volumes my_volume
.
Löschen von Volumes
Löschen eines Volumes, das nicht mehr verwendet wird.
Beispiel
Löschen eines Volumes:
docker volume rm my_volume
Wenn das Volume von einem Container verwendet wird, gibt Docker einen Fehler aus. Stelle sicher, dass Container, die das Volume benutzen, gestoppt und gelöscht sind.
GO TO FULL VERSION