Standardmäßig speichert Docker seine Daten im Verzeichnis „/var/lib/docker“ auf der Root-Partition. Mit zunehmender Anzahl Ihrer Anwendungen und Container kann dieses Verzeichnis schnell viel Speicherplatz belegen. Symptome wie verminderte Serverleistung, Probleme beim Speichern von Daten oder zufällige Abstürze deuten häufig darauf hin, dass die Root-Partition fast voll ist. Dieser Leitfaden zeigt Ihnen effektive Strategien, wie Sie Ihre Docker-Volumes oder -Daten auf eine alternative Partition verschieben und so die Root-Partition entlasten können.
Die Bedeutung des Verschiebens von Docker-Volumes
Docker-Container erzeugen häufig große Mengen an persistenten Daten, die den Speicherplatz Ihrer Root-Partition schnell erschöpfen können. Das Verschieben von Docker-Volumes auf eine andere Partition bietet mehrere Vorteile:
- Speicherplatz auf dem Root-Dateisystem freigeben
- Vermeiden Sie Systemabstürze aufgrund von Speicherplatzmangel.
- Größere Anwendungsdaten sollten exklusiven Speicherlösungen zugewiesen werden.
- Verbesserung des Gesamtmanagements der Speicherressourcen
Beispielsweise können Datenbank-Container wie MySQL oder PostgreSQL zahlreiche Gigabytes an Daten speichern. Die Übertragung dieser Datenmengen auf eine größere Partition kann die Systemstabilität erheblich verbessern.
So finden Sie das Docker-Volume-Verzeichnis
Das Auffinden Ihres Docker-Volume-Verzeichnisses ist ein entscheidender erster Schritt vor dem Umzug. Verwenden Sie den folgenden Befehl, um alle verfügbaren Docker-Volumes aufzulisten:
docker volume ls

Um detaillierte Informationen zu einem bestimmten Volume zu erhalten, führen Sie folgenden Befehl aus:
docker volume inspect volume_name
Suchen Sie innerhalb der Ausgabe das MountpointFeld, das das genaue Verzeichnis angibt, in dem Docker die Volume-Daten speichert.

So verschieben Sie das gesamte Docker-Datenstammverzeichnis
Um alle Docker-Daten – einschließlich Volumes, Images und Logs – auf eine andere Partition zu übertragen, können Sie das gesamte Docker-Speicherverzeichnis verschieben. Dieser umfassende Ansatz stellt sicher, dass „/var/lib/docker“ nicht voll wird.
Beginnen Sie damit, den Docker-Dienst zu stoppen, um Dateiänderungen während der Migration zu verhindern:
sudo systemctl stop docker
Als Nächstes verwenden Sie den rsync-Befehl, um die Docker-Daten zu kopieren:
sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/
Dieser Befehl kopiert das Docker-Verzeichnis unter Beibehaltung der Berechtigungen und zeigt den Übertragungsfortschritt an.

Falls Sie zusätzliche Docker-Attribute beibehalten müssen, können Sie diesen erweiterten Befehl verwenden:
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/
Dieser Befehl ist vorzuziehen, da er mehr Dateisystem-Metadaten beibehält und eine detailliertere Fortschrittsanzeige bietet.
Nach der Übertragung benennen Sie das vorherige Datenverzeichnis als Sicherungskopie um:
sudo mv /var/lib/docker /var/lib/docker.old
Aktualisieren Sie die Docker-Konfiguration, indem Sie die Daemon-Datei wie folgt bearbeiten:
sudo nano /etc/docker/daemon.json
Fügen Sie die folgende Konfiguration hinzu:
{"data-root": "/path/to/new/partition/docker-data"}

Starten Sie anschließend Docker neu, indem Sie folgenden Befehl ausführen:
sudo systemctl start docker
Bestätigen Sie mit folgendem Befehl, dass das Docker-Datenverzeichnis erfolgreich aktualisiert wurde:
docker info | grep "Docker Root Dir"

Wenn alles korrekt erscheint, können Sie mit dem Löschen der alten Sicherung fortfahren:
sudo rm -rf /var/lib/docker.old
Verschieben aller Docker-Daten über Docker Desktop (GUI-Methode)
Wenn Sie eine grafische Oberfläche bevorzugen, können Sie mit Docker Desktop alle Docker-Daten übertragen, indem Sie den Speicherort des Festplatten-Images ändern. Mit dieser Methode werden alle von Docker gespeicherten Daten – einschließlich Images, Container und Volumes – an einen neuen Speicherort verschoben.
Öffnen Sie Docker Desktop, navigieren Sie zu Einstellungen, gehen Sie zu Ressourcen → Erweitert und suchen Sie die Option Speicherort des Disk-Images.

Wählen Sie „Durchsuchen“, um ein Verzeichnis auf der gewünschten Partition für den Docker-Speicher festzulegen, z. B.„/mnt/newdisk/docker-data“.Klicken Sie auf „Anwenden & Neustart“, um die Datenverschiebung zu starten.

Bewegen spezifischer Volumendaten
Für mehr Flexibilität können Sie ein bestimmtes Docker-Volume auf eine andere Partition verschieben und es dabei über eine Host-Bind-Mount-Verbindung mit Ihrem Container nutzen. Diese Methode ist sicher, unkompliziert und vereinfacht die Datensicherung. Stoppen Sie zunächst den Container, der das Volume verwendet.
docker stop container_name
Anschließend können Sie rsyncdie Volumendaten sicher übertragen:
sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/
Dieser Befehl überträgt den gesamten Inhalt des vorherigen Volumes nach „/data/docker/my_volume“.
Sie müssen Ihre „docker-compose.yml“-Datei anpassen, um eine Bind-Mount-Verbindung anstelle eines von Docker verwalteten Volumes zu verwenden:
services: my_service: volumes: - /data/docker/my_volume:/container/path
Ersetzen Sie den Platzhalter /container/pathdurch den ursprünglichen Mount-Pfad innerhalb des Containers. Stellen Sie den Container anschließend mit folgendem Befehl erneut bereit:
docker-compose up -d
Abschluss
Durch das Verschieben von Docker-Volumes oder des gesamten Docker-Datenverzeichnisses auf eine größere Partition lässt sich erheblich Speicherplatz auf dem Root-Dateisystem freigeben, was die Serverstabilität verbessert. Dieser proaktive Ansatz minimiert das Risiko von Datenverlust und vereinfacht die zukünftige Speicherverwaltung.
Falls sich das Verschieben des gesamten Docker-Verzeichnisses als nicht durchführbar erweist, gibt es andere Möglichkeiten, Speicherplatz freizugeben, z. B.durch die Verwendung des docker system pruneBefehls zum Löschen ungenutzter Container, Images, Netzwerke und Caches oder durch die Verwendung von Linux-Bind-Mounts, um umfangreiche Verzeichnisse zu verschieben, ohne den Betrieb von Docker zu unterbrechen.
Schreibe einen Kommentar