Root Data Directory in Docker dauerhaft ändern
Dieser Artikel erklärt wie man das standardmäßige Root-Data-Directory /var/lib/docker/
auf ein anderes Verzeichnis dauerhaft umstellen kann.
Hintergrund
Das Verzeichnis /var/lib/docker
speichert alle Images, Volumes von Docker und kann stark anwachsen, je nachdem wie viele Container man entsprechend in Nutzung hat. Das Verzeichnis ist wie folgt aufgebaut:
root@js-checkmk-02:/var/lib/docker# ls buildkit containers engine-id image network overlay2 plugins runtimes swarm tmp volumes
Man sieht, dass es in Verwendung ist, wenn man z.B. auch den Status mit df -h überprüft:
root@js-checkmk-02:/var/lib/docker# df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 794M 684K 794M 1% /run /dev/sda1 47G 3.8G 41G 9% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda15 124M 12M 113M 10% /boot/efi tmpfs 794M 0 794M 0% /run/user/0 tmpfs 794M 0 794M 0% /run/user/1000 overlay 47G 3.8G 41G 9% /var/lib/docker/overlay2/a6a4203cef42815c7187f584436e5eb9dff385e3ca9c92d597a38806b9dc255d/merged
Konfiguration
Zuerst muss man docker
stoppen, das hat natürlich unmittelbar auch eine Auswirkung auf alle aktiven Container. Zusätzlich installieren wir das Tool rsync
.
root@js-checkmk-02:/# systemctl stop docker && apt install rsync
Danach muss man Docker mitteilen, unter welchem Pfad nun das neue Data-Root aufzufinden ist:
# Verzeichnis erstellen falls noch nicht vorhanden root@js-checkmk-02:/# mkdir -p /root/docker/root # Daemon-Datei anlegen in /etc/docker root@js-checkmk-02:/# nano /etc/docker/daemon.json # Bitte in die Datei folgendes einfügen, Ihren Pfad anpassen und danach speichern. In diesem Beispiel ändern wir es auf /root/docker/root { "data-root": "/root/docker/root" }
Danach kopiert man alle Inhalte des alten Docker-Root-Verzeichnis in das neue Data-Root-Verzeichnis und benennt danach das alte /var/lib/docker
Verzeichnis in /var/lib/docker.old
um.
rsync -aP /var/lib/docker/ "/root/docker/root" cp -rp /var/lib/docker/* "/root/docker/root" mv /var/lib/docker /var/lib/docker.old
Danach kann man Docker wieder starten und man sollte überprüfen, ob die Container soweit noch funktionieren:
systemctl start docker
Funktioniert alles kann man das alte Data-Root-Directory komplett löschen:
rm -rf /var/lib/docker.old
Autor: Jonas Sterr Ich beschäftige mich mit den Themen Software Defined Storage, Proxmox Virtualisierung auf Basis von KVM, QEMU & Ceph im Produktmanagement der Thomas-Krenn.AG in Freyung. Proxmox ist meine absolute Leidenschaft und ich freue mich gerne über Kontaktanfragen und einen Austausch auf LinkedIn.
|