Docker Storage verstehen: Volumes, Bind Mounts und tmpfs

Docker-Container sind standardmäßig flüchtig: Sobald ein Container gestoppt oder gelöscht wird, gehen alle darin gespeicherten Daten verloren. Um Daten persistent zu speichern, bietet Docker verschiedene Storage-Optionen: Volumes, Bind Mounts und tmpfs. In diesem Tutorial erklären wir die Unterschiede, Vor- und Nachteile sowie praxisnahe Einsatzszenarien für jede Methode.

Docker Volumes

Volumes sind die von Docker verwalteten Speicherbereiche, die außerhalb des Container-Dateisystems liegen. Sie sind ideal für persistente Daten und bieten einfache Backup- und Wiederherstellungsmechanismen.

Eigenschaften von Volumes

  • Persistente Speicherung unabhängig vom Container-Lifecycle
  • Von Docker verwaltet, daher einfach zu sichern und zu migrieren
  • Performance-optimiert für Docker
  • Unterstützt Multi-Container-Zugriffe auf dieselben Daten

Volumes erstellen und nutzen

# Volume erstellen
docker volume create db_data

Container mit Volume starten

docker run -d -v db_data:/var/lib/mysql --name mysql_db mysql

Volume verwalten

# Volumes anzeigen
docker volume ls

Volume-Details prüfen

docker volume inspect db_data

Volume löschen

docker volume rm db_data

Bind Mounts

Bind Mounts verbinden ein Verzeichnis vom Host direkt mit einem Verzeichnis im Container. Dies ist nützlich, um lokale Konfigurationsdateien oder Quellcode in den Container zu integrieren.

Eigenschaften von Bind Mounts

  • Direkter Zugriff auf Host-Dateien und -Verzeichnisse
  • Flexibel für Entwicklungs- und Testumgebungen
  • Abhängig vom Host-Dateisystem, daher weniger portabel
  • Keine automatische Verwaltung durch Docker

Bind Mounts verwenden

# Host-Verzeichnis in Container einbinden
docker run -d -v /home/user/app:/usr/src/app --name my_app_container node:18

Änderungen im Host-Verzeichnis werden direkt im Container sichtbar

tmpfs-Mounts

tmpfs-Mounts speichern Daten im Arbeitsspeicher (RAM) des Hosts. Sie sind flüchtig, schnell und ideal für temporäre Daten, die nach dem Stoppen des Containers nicht erhalten bleiben müssen.

Eigenschaften von tmpfs

  • Daten liegen nur im RAM und werden beim Container-Stop gelöscht
  • Sehr schnelle Lese- und Schreibzugriffe
  • Geeignet für Caching, temporäre Logs oder Sessions
  • Keine Persistenz, daher nicht für Datenbanken oder kritische Daten

tmpfs-Mounts verwenden

# tmpfs im Container einbinden
docker run -d --tmpfs /tmp:rw,size=100m --name temp_container alpine

Testen im Container

docker exec -it temp_container sh
echo "Test" > /tmp/testfile

Vergleich: Volumes vs. Bind Mounts vs. tmpfs

Die Wahl der Speicheroption hängt vom Anwendungsfall ab:

  • Volumes: Persistente Daten, Backups, Multi-Container-Zugriffe
  • Bind Mounts: Entwicklungsumgebungen, Zugriff auf Host-Dateien
  • tmpfs: Temporäre Daten, Cache, schnelle Operationen

Best Practices für produktive Umgebungen

  • Volumes für Datenbanken, Konfigurationsdateien und persistenten Speicher verwenden
  • Bind Mounts nur für Entwicklungs- oder Testumgebungen nutzen
  • tmpfs für temporäre Daten und Performance-kritische Operationen einsetzen
  • Volumes regelmäßig sichern und Versionierung implementieren
  • Ressourcenlimits für tmpfs-Mounts setzen, um RAM-Überlastung zu vermeiden:
    docker run -d --tmpfs /tmp:rw,size=200m alpine

Praxisbeispiele

Datenbank mit Volume

docker volume create pg_data
docker run -d -v pg_data:/var/lib/postgresql/data --name postgres_db postgres:15

Entwicklung mit Bind Mount

docker run -d -v /home/user/project:/usr/src/app -w /usr/src/app node:18 npm start

Temporärer Cache mit tmpfs

docker run -d --tmpfs /cache:rw,size=50m --name cache_container alpine sh -c "echo 'Cache-Test' > /cache/testfile"

Fazit für die Praxis

Die Wahl des richtigen Docker-Storage ist entscheidend für Performance, Sicherheit und Datenpersistenz. Volumes bieten die stabilste Lösung für produktive Anwendungen, Bind Mounts sind ideal für Entwicklungszwecke, und tmpfs sorgt für schnelle, temporäre Speicherlösungen. Durch die gezielte Nutzung der Storage-Optionen können Container effizient, sicher und skalierbar betrieben werden.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles