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.











