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-volumeAusgabe:
my-volume
Befehl:
docker run -d --name my-container -v my-volume:/app/data nginxErklä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/dataErklä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 lsAusgabe:
DRIVER VOLUME NAME
local my-volume
Befehl:
docker volume rm my-volumeBefehl:
docker volume pruneErklä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 nginxErklä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 -dBefehl zum Überprüfen der Volumes:
docker volume lsAusgabe:
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.