Wie man Docker-Volumes sicher auf eine größere Partition verschiebt

Index
  1. Warum Muss Man Docker Volumes Verschieben
  2. Docker Volume Verzeichnis Lokalisieren
  3. Das Gesamte Docker Daten Root Verschieben
  4. Alle Docker Daten Bewegen Mit Docker Desktop
  5. Nur spezifische Volumendaten verschieben
  6. Zusammenfassung

In diesem Leitfaden erfahren Sie, wie Sie Docker-Volumes auf eine andere Partition verschieben, um Speicherplatz auf der Root-Partition freizugeben und die Systemleistung zu verbessern.

Standardmäßig speichert Docker alles im Verzeichnis “/var/lib/docker”, das auf der Root-Partition (/) liegt. Wenn Ihre Container wachsen, kann sich dieser Ordner schnell füllen. Wenn Sie feststellen, dass Ihr Server langsam läuft, Daten nicht gespeichert werden können oder zufällig abstürzt, liegt das wahrscheinlich daran, dass der Root-Partition der Speicherplatz ausgegangen ist. In diesem Leitfaden zeigen wir Ihnen die Methoden, um Ihr Docker-Volume (oder Daten) auf eine andere Partition zu verschieben und Speicherplatz auf der Root-Partition freizugeben.

Warum Muss Man Docker Volumes Verschieben

Docker-Container erzeugen oft große Mengen an persistenten Daten. Mit der Zeit kann dieser Daten bestanden den Speicherplatz Ihrer Root-Partition verbrauchen. Das Verschieben von Docker-Volumen auf eine andere Partition hilft Ihnen dabei:

  • Speicherplatz im Root-Dateisystem freizugeben
  • Systemabstürze aufgrund von Speichererschöpfung zu verhindern
  • Große Anwendungsdaten auf dediziertem Speicher zu speichern
  • Die allgemeine Speicherverwaltung zu verbessern

Beispielsweise können Datenbank-Container wie MySQL oder PostgreSQL Gigabytes an Daten innerhalb von Volumes speichern. Das Verschieben dieser Volumes auf eine größere, dedizierte Partition kann helfen, die Systemstabilität aufrechtzuerhalten.

Docker Volume Verzeichnis Lokalisieren

Bevor Sie ein Docker-Volume verschieben, müssen wir zuerst feststellen, wo Docker es im System speichert. Führen Sie den folgenden Befehl aus, um alle verfügbaren Docker-Volumes aufzulisten:

docker volume ls

Nachdem Sie den Volumennamen identifiziert haben, führen Sie den folgenden Befehl aus, um dieses spezifische Volume zu inspizieren:

docker volume inspect volume_name

Dieser Befehl zeigt detaillierte Informationen über das Volume an. Im Ausgabeprotokoll suchen Sie das Feld Mountpoint. Es zeigt das genaue Verzeichnis, in dem Docker die Volume-Daten speichert.

Das Gesamte Docker Daten Root Verschieben

Eine Möglichkeit, Docker-Daten auf eine andere Partition zu verschieben, besteht darin, das gesamte Docker-Speicherverzeichnis zu verlagern, das Volumes, Images, Container und Protokolle umfasst. Es ist die sauberste und sicherste Methode, wenn “/var/lib/docker” voll ist.

Dafür müssen Sie zunächst den Docker-Dienst stoppen, um sicherzustellen, dass während der Migration keine Dateien geändert werden:

sudo systemctl stop docker

Als nächstes können Sie die Docker-Daten mit dem rsync-Befehl kopieren:

sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/

Hinweis: Ändern Sie “/path/to/new/partition/” in den Pfad der neuen Partition, auf die Sie den Ordner migrieren möchten.

Dieser Befehl kopiert das Docker-Verzeichnis und bewahrt dabei die Berechtigungen und zeigt den Fortschritt während des Transfers an.

Alternativ können Sie den folgenden Befehl verwenden, der zusätzliche Docker-Attribute wie Hardlinks, ACLs und erweiterte Attribute bewahrt:

sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/

Diese Version wird empfohlen, wenn Sie Docker-Daten migrieren, da sie mehr Dateisystemmetadaten bewahrt und einen klareren Fortschrittsindikator bietet.

Danach benennen Sie das alte Datenverzeichnis um, um eine Sicherung zu erstellen, bevor Sie es löschen.

sudo mv /var/lib/docker /var/lib/docker.old

Jetzt aktualisieren Sie die Docker-Konfiguration, indem Sie die Daemon-Datei mit diesem Befehl öffnen:

sudo nano /etc/docker/daemon.json

Fügen Sie den folgenden Inhalt in diese Datei ein:

{
"data-root": "/path/to/new/partition/docker-data"
}

Starten Sie abschließend Docker mit sudo systemctl start docker. Danach können Sie das neue Docker-Datenverzeichnis mit folgendem Befehl bestätigen:

docker info | grep "Docker Root Dir"

Wenn alles in Ordnung ist, entfernen Sie das alte Backup:

sudo rm -rf /var/lib/docker.old

Alle Docker Daten Bewegen Mit Docker Desktop

Docker Desktop ermöglicht es Ihnen, alle Docker-Daten auf eine andere Partition zu verschieben, indem Sie den Speicherort des Disk-Images ändern. Diese Option.

Überträgt alles, was von Docker gespeichert ist, einschließlich Images, Container, Volumes und des Build-Cache, an einen neuen Speicherort auf Ihrem System.

Um dies zu tun, öffnen Sie Docker Desktop und navigieren zu Einstellungen , gehen Sie zu Ressourcen Erweitert und suchen Sie dann die Option Speicherort des Disk-Images .

Klicken Sie auf Durchsuchen und wählen Sie einen Ordner auf der neuen Partition oder dem Laufwerk aus, in dem Docker seine Daten speichern soll, wie z.B. “/mnt/newdisk/docker-data”. Nachdem Sie den neuen Speicherort ausgewählt haben, klicken Sie auf Anwenden & Neustarten . Docker Desktop wird dann neu gestartet und alle vorhandenen Docker-Daten in die ausgewählte Partition verschieben.

Hinweis: Dies verschiebt alle Docker-Daten. Derzeit gibt es keine GUI-Option, um einzelne Volumes zu verschieben.

Nur spezifische Volumendaten verschieben

Sie können ein bestimmtes Docker-Volume auf eine andere Partition verschieben und es über einen Host-Bind-Mount mit Ihrem Container verwenden. Dieser Ansatz ist einfach, sicher und leicht zu sichern. Bevor Sie das Volume bewegen, stoppen Sie den Container, der es verwendet:

docker stop container_name

Danach verwenden Sie rsync, um alle Daten sicher in Ihr neues Verzeichnis zu verschieben:

sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/

Dies kopiert alles vom alten Volume nach “/data/docker/my_volume”.

Bearbeiten Sie Ihre “docker-compose.yml”-Datei, um einen Bind-Mount anstelle eines von Docker verwalteten Volumes zu verwenden:

services:
 my_service:
 volumes:
 - /data/docker/my_volume:/container/path

Ersetzen Sie /container/path mit dem Pfad innerhalb des Containers, wo das Volume ursprünglich gemountet war. Fahren Sie dann mit dem folgenden Befehl fort, um den Container neu bereitzustellen:

docker-compose up -d

Zusammenfassung

Das Verschieben von Docker-Volumen oder des gesamten Docker-Datenverzeichnisses auf eine größere Partition schafft Speicherplatz auf Ihrem Root-Dateisystem und hält Ihren Server stabil. Container laufen weiterhin reibungslos, ohne Risiko eines Datenverlusts, und die zukünftige Speicherverwaltung wird wesentlich einfacher.

Wenn das Verschieben des gesamten Docker-Verzeichnisses nicht möglich ist, können Sie trotzdem Speicherplatz mit anderen Methoden zurückgewinnen. Dazu gehört das Bereinigen von ungenutzten Containern, Images, Netzwerken und Caches mit docker system prune oder individuellen Bereinigungsbefehlen sowie die Verwendung von Linux-Bind-Mounts, um große Verzeichnisse zu verschieben, ohne die Laufzeit von Docker zu beeinträchtigen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up