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
Foto Jonas Sterr.jpg

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 Grundlagen - die wichtigsten Befehle
Docker Installation unter Debian 12
InfluxDB2 + Grafana Konfiguration eines Metric-Servers für Proxmox VE