====== 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''