Die Datenverwaltung in Docker ist ein kritischer Aspekt, insbesondere wenn es darum geht, persistente Daten zwischen Container-Neustarts und Updates beizubehalten. Docker bietet zwei Hauptmethoden zur Datenverwaltung: Volumes und Bind Mounts.
Volumes sind die bevorzugte Methode zur Datenverwaltung in Docker. Sie werden von Docker verwaltet und bieten eine einfache Möglichkeit, Daten außerhalb des Containers zu speichern und zu teilen.
Befehl:
docker volume create my-volume
Ausgabe:
my-volume
Befehl:
docker run -d --name my-container -v my-volume:/app/data nginx
Erklärung: Dieser Befehl startet einen Container
namens my-container
und bindet das Docker-Volume
my-volume
an das Verzeichnis /app/data
im
Container.
Befehl:
docker run --rm -v my-volume:/app/data busybox ls /app/data
Erklärung: Dieser Befehl startet einen temporären
Container, der das Volume my-volume
mountet und den Inhalt
des Verzeichnisses /app/data
auflistet.
Befehl:
docker volume ls
Ausgabe:
DRIVER VOLUME NAME
local my-volume
Befehl:
docker volume rm my-volume
Befehl:
docker volume prune
Erklärung: Dieser Befehl entfernt alle nicht verwendeten Docker-Volumes.
Bind Mounts bieten eine direkte Möglichkeit, Dateien und Verzeichnisse vom Host-System in den Container zu mounten. Sie sind flexibel und ermöglichen den Zugriff auf Host-Dateisysteme, erfordern jedoch mehr manuelle Verwaltung als Volumes.
Befehl:
docker run -d --name my-container -v /host/path:/container/path nginx
Erklärung: Dieser Befehl startet einen Container
namens my-container
und bindet das Host-Verzeichnis
/host/path
an das Verzeichnis /container/path
im Container.
Docker-Compose-Datei:
version: '3.1'
services:
db:
image: mysql:5.7
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
db-data:
Erklärung: Diese Docker-Compose-Datei definiert
einen MySQL-Datenbankdienst, der ein Volume namens db-data
verwendet, um die Datenbankdaten im Verzeichnis
/var/lib/mysql
zu speichern.
Befehl zum Starten der Dienste:
docker-compose up -d
Befehl zum Überprüfen der Volumes:
docker volume ls
Ausgabe:
DRIVER VOLUME NAME
local my_project_db-data
Docker-Compose-Datei:
version: '3.1'
services:
web:
image: nginx:latest
volumes:
- ./web-content:/usr/share/nginx/html
ports:
- "8080:80"
Erklärung: Diese Docker-Compose-Datei definiert
einen Nginx-Webdienst, der das lokale Verzeichnis
./web-content
als Bind Mount in das Verzeichnis
/usr/share/nginx/html
im Container einbindet.
Befehl zum Starten der Dienste:
docker-compose up -d
Änderungen in ./web-content
werden sofort im
Container widergespiegelt und sind über localhost:8080
zugänglich.
Die Verwaltung von Daten in Docker-Umgebungen ist essenziell für die Entwicklung und den Betrieb von Anwendungen. Docker Volumes bieten eine einfache und effiziente Methode zur Datenpersistenz, während Bind Mounts flexible und direkte Dateisystemzugriffe ermöglichen. Beide Methoden haben ihre spezifischen Anwendungsfälle und können je nach Bedarf eingesetzt werden. Im nächsten Kapitel wird die Verwendung von Docker Compose zur Verwaltung von Multi-Container-Anwendungen behandelt.