====== Docker mit BTRFS als Storage ======
siehe auch https://docs.docker.com/storage/storagedriver/btrfs-driver/
===== BTRFS vorbereiten =====
Voraussetzungen:
* kernel unterstützt BTRFS ((
modinfo btrfs
modprobe btrfs
grep btrfs /proc/filesystems
-> Sollte bei Debian, Ubuntu und SuSE ''btrfs'' ausgeben. RedHat unterstützt BTRFS nicht.
))
* 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/*
…
# 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 =====
{
"storage-driver": "btrfs"
}
systemctl start docker.socket
systemctl start docker.service
prüfen:
docker info
-> ''Storage Driver: btrfs''