Wie Docker-Speicher funktioniert: Volumes vs Bind Mounts | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Wie Docker-Speicher funktioniert: Volumes vs Bind Mounts

Einführung

In diesem Tutorial lernen Sie, wie Docker-Speicher funktioniert und wie Sie Daten mit Docker-Volumes und Bind-Mounts persistent speichern können. Sie verstehen auch die wesentlichen Unterschiede zwischen diesen Ansätzen und wann Sie jeden in der Produktion verwenden sollten. Dies hilft Ihnen, Datenverlust zu vermeiden und zuverlässige containerisierte Systeme zu entwerfen.

Voraussetzungen

  • Zielgruppe: Anfänger-Systemadministratoren
  • Geschätzte Zeit: ~30 Minuten
  • Betriebssystem: Jedes OS mit Docker-Unterstützung wie Ubuntu 22.04+, Debian 12+, CentOS Stream oder macOS mit Docker Desktop
  • Software: Docker 24.0.0 oder neuer
  • Berechtigungen: Benutzer mit Zugriff auf Docker oder sudo-Rechte
  • Hardware: Mindestens 2 GB RAM und 10 GB freier Speicherplatz
  • Netzwerk: Internetzugang zum Herunterladen von Container-Images
  • Vorausgesetztes Wissen: Grundlegende Befehlszeilenbenutzung und Verständnis von Containern

Schritt 1: Verstehen, wie Docker-Speicher funktioniert

Docker-Container verwenden ein geschichtetes Dateisystem. Jeder Container hat eine beschreibbare Schicht über den schreibgeschützten Image-Schichten.

Was passiert, wenn ein Container Daten schreibt

  1. Docker speichert Image-Schichten als schreibgeschützt
  2. Wenn Sie einen Container starten, fügt Docker eine beschreibbare Schicht hinzu
  3. Alle Dateiänderungen erfolgen nur in dieser beschreibbaren Schicht

Ergebnis

Wenn Sie einen Container löschen, gehen alle Daten in der beschreibbaren Schicht verloren. Das bedeutet, dass der Container-Speicher standardmäßig flüchtig ist.

Info

Dieses Verhalten ist nützlich für zustandslose Anwendungen, aber nicht für Datenbanken oder persistente Dienste.

Schritt 2: Erstellen und Verwenden von Docker-Volumes

Docker-Volumes sind von Docker erstellte und verwaltete Speicherorte.

Ein Volume erstellen

Führen Sie den folgenden Befehl aus:

docker volume create my_volume

Sie sollten den Volumen-Namen zurückgegeben sehen.

Ein Volume in einem Container verwenden

Führen Sie den folgenden Befehl aus:

docker run -d -v my_volume:/app/data --name volume_test busybox

Docker bindet das Volume im Container unter /app/data ein.

Ergebnis

Daten, die in /app/data geschrieben werden, bleiben erhalten, auch wenn der Container entfernt wird.

Wesentliche Merkmale von Volumes

  • Von Docker verwaltet
  • In Docker-internen Verzeichnissen wie /var/lib/docker/volumes/ gespeichert
  • Einfach zu sichern und zu migrieren
  • Isoliert von der Host-Dateisystemstruktur

Tip

Verwenden Sie Volumes für Datenbanken und Produktions-Workloads.

Schritt 3: Erstellen und Verwenden von Bind-Mounts

Bind-Mounts verknüpfen ein bestimmtes Verzeichnis auf dem Host mit einem Verzeichnis im Container.

Ein Bind-Mount verwenden

Führen Sie den folgenden Befehl aus:

docker run -d -v /home/<YOUR_USERNAME>/data:/app/data --name bind_test busybox

Ergebnis

Der Container greift direkt auf das Host-Verzeichnis zu. Alle Änderungen im Host-Verzeichnis sind sofort im Container sichtbar.

Wesentliche Merkmale von Bind-Mounts

  • Abhängig von Host-Dateisystempfaden
  • Erlauben direkte Dateibearbeitung vom Host
  • Keine von Docker verwaltete Isolation
  • Flexibler, aber weniger portabel

Info

Bind-Mounts spiegeln Änderungen sofort zwischen Host und Container wider.

Schritt 4: Vergleich von Volumes und Bind-Mounts

Das Verständnis der Unterschiede hilft Ihnen, die richtige Option zu wählen.

Docker-Volumes

  • Von Docker verwaltet
  • Portabel über Umgebungen hinweg
  • Sicherer für den Produktionseinsatz
  • Einfacher zu sichern
  • Abstrahiert vom Host-Dateisystem

Bind-Mounts

  • Vom Host verwaltet
  • An spezifische Dateisystempfade gebunden
  • Nützlich für die Entwicklung
  • Bieten direkten Dateizugriff
  • Weniger sicher, wenn falsch konfiguriert

Schritt 5: Auswahl zwischen Volumes und Bind-Mounts in der Produktion

Verwenden Sie die folgenden Richtlinien.

Wann Docker-Volumes verwenden

  • Ausführen von Datenbanken wie MySQL oder PostgreSQL
  • Speichern von Anwendungsdaten, die erhalten bleiben müssen
  • Bereitstellen von Produktionsdiensten
  • Portabilität über Server hinweg benötigen

Wann Bind-Mounts verwenden

  • Lokale Entwicklungsumgebungen
  • Direktes Bearbeiten von Code- oder Konfigurationsdateien
  • Debuggen von Containerverhalten
  • Temporäre oder Test-Setups

Info

Wichtig: Bind-Mounts können sensible Host-Dateien für Container zugänglich machen, wenn sie falsch konfiguriert sind. Überprüfen Sie immer Pfade und Berechtigungen.

Verifizierung und Testen

Erstellen Sie einen Test-Container mit einem Volume:

docker run -it -v my_volume:/data --name playground busybox

Erstellen Sie innerhalb des Containers eine Datei:

echo test > /data/file.txt

Beenden Sie den Container und entfernen Sie ihn:

docker rm -f playground

Starten Sie einen neuen Container mit demselben Volume:

docker run -it -v my_volume:/data --name playground busybox

Überprüfen Sie die Datei:

cat /data/file.txt

Erwartetes Ergebnis: Die Datei existiert noch, was die Datenpersistenz bestätigt.

Änderungen rückgängig machen

Um Ressourcen zu bereinigen, führen Sie die folgenden Befehle aus:

docker rm -f playground volume_test bind_test

docker volume rm my_volume

docker system prune -f

Info

Wichtig: Das Entfernen von Volumes löscht alle gespeicherten Daten dauerhaft.

Fehlerbehebung

  • Problem: Daten verschwinden nach dem Neustart des Containers
    Ursache: Kein Volume oder Bind-Mount verwendet
    Lösung: Persistent Storage mit Volumes oder Bind-Mounts anhängen
  • Problem: Berechtigungsfehler
    Ursache: Berechtigungsfehler im Host-Verzeichnis
    Lösung: Berechtigungen mit chmod oder chown anpassen
  • Problem: Volume wird nicht korrekt eingebunden
    Ursache: Falscher Pfad oder Syntax
    Lösung: Mount-Format und Pfade überprüfen

Fazit und nächste Schritte

Sie haben gelernt, wie Docker-Speicher funktioniert und wie Sie Daten mit Volumes und Bind-Mounts persistent speichern können. Sie verstehen auch, wann Sie jeden Ansatz in der Produktion verwenden sollten. Als nächstes erkunden Sie Docker Compose, um Multi-Container-Anwendungen zu verwalten und Speicher auf strukturiertere Weise zu definieren.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA