====== 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''
mount -m /dev/sdaX /mnt/btrfs
cd /mnt/btrfs
btrfs subvolume create $(date '+%Y%m%d')00
btrfs subvolume show $(date '+%Y%m%d')00
-> Subvolume ID merken und statt 20xxxxxx00 einsetzen:
btrfs subvolume set-default 20xxxxxx00 .
===== Docker Daten in BTRFS verschieben =====
systemctl stop docker.socket
systemctl stop docker.service
cd /var/lib/
du -sh docker
df -h .
-> ist genug Platz für ein Backup?
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
systemctl start docker.service
===== Snapshot erstellen =====
aktuell aktives Docker-Subvolume ermitteln:
mount /mnt/btrfs
cd /mnt/btrfs
btrfs subvolume get-default .
-> ID 472 gen 428819 top level 5 path **20xxxxxx00**
Container stoppen:
systemctl stop docker.socket docker.service
Snapshot erstellen
btrfs subvolume snapshot 20xxxxxx00 $(date '+%Y%m%d')01
Container starten:
systemctl start docker.socket
watch docker ps
====== Docker mit BTRFS statt overlay ======
{
"storage-driver": "btrfs"
}
systemctl start docker.socket
systemctl start docker.service
prüfen:
docker info
-> ''Storage Driver: btrfs''