Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:docker_mit_btrfs

Docker mit BTRFS als Storage

BTRFS vorbereiten

Voraussetzungen:

  • kernel unterstützt BTRFS 1)
  • Paket:
    • Debian (12): btrfs-progs
  • Freie Partition oder freies Logical Volume
lsblk
mkfs.btrfs /dev/sdaX

→ UUID merken, kommt später in die /etc/fstab

mkdir /mnt/btrfs
mount /dev/sdaX /mnt/btrfs
cd /mnt/btrfs
btrfs subvolume create $(date '+%Y%m%d')

→ Subvolume ID merken und bei XXX einsetzen:

btrfs subvolume set-default XXX $(date '+%Y%m%d')/

Docker Daten in BTRFS verschieben

systemctl stop docker.socket
systemctl stop docker.service
cd /var/lib/
du -sh docker
tar -caf docker.tar.zst docker/
shopt -s dotglob
rm -rf docker/*
/etc/fstab
…
# device during installation: /dev/sdaX
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /var/lib/docker btrfs rw 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/btrfs btrfs noauto,subvolid=5,subvol=/ 0 2
mount -av
tar -xf docker.tar.zst
rm docker.tar.zst

Snapshot erstellen

systemctl stop docker.socket
systemctl stop docker.service
mount /mnt/btrfs
cd /mnt/btrfs

aktuell aktives Docker-Subvolume ermitteln:

btrfs subvolume get-default .

→ ID 472 gen 428819 top level 5 path 2025012601

btrfs subvolume snapshot 2025012601 $(date '+%Y%m%d')00
systemctl start docker.socket

Docker mit BTRFS starten

/etc/docker/daemon.json
{
  "storage-driver": "btrfs"
}
systemctl start docker.socket
systemctl start docker.service

prüfen:

docker info

Storage Driver: btrfs

1)
modinfo btrfs
modprobe btrfs
grep btrfs /proc/filesystems
→ Sollte bei Debian, Ubuntu und SuSE btrfs ausgeben. RedHat unterstützt BTRFS nicht.
admin_grundlagen/docker_mit_btrfs.txt · Zuletzt geändert: 2025/04/01 11:02 von ingo_wichmann