Root Data Directory in Docker dauerhaft ändern

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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.


Das könnte Sie auch interessieren

Docker Installation unter Debian 12
N8n installieren
Reverse Proxy für n8n mit Nginx Proxy Manager einrichten