modinfo btrfs modprobe btrfs grep btrfs /proc/filesystems→ Sollte bei Debian, Ubuntu und SuSE
btrfs ausgeben. RedHat unterstützt BTRFS nicht.
Hier geht es darum, alles was in Docker ist mit Snapshots sichern zu können. Und nicht um Docker mit BTRFS statt overlay
Voraussetzungen:
btrfs-progsdu -sh /var/lib/docker lsblk
→ Blockdevice mit genug Platz wählen.
mkfs.btrfs /dev/xxx
→ UUID merken, kommt später in die /etc/fstab
mount -m /dev/xxx /mnt/btrfs cd /mnt/btrfs btrfs subvolume create $(date '+%Y%m%d')00 btrfs subvolume set-default $(date '+%Y%m%d')00
ab Docker Version 29.0 ist containerd das default Storage Backend
dockerd --version
docker info -f '{{ .DriverStatus }}'
→ enthält: driver-type io.containerd.snapshotter.v1
systemctl stop docker.socket docker.service containerd.service
… root = "/var/lib/docker/containerd" …
cd /var/lib mv containerd/ docker ln -s docker/containerd containerd
systemctl stop docker.socket docker.service containerd.service
cd /var/lib/ shopt -s dotglob mv docker/* /mnt/btrfs/$(date '+%Y%m%d')00
… # device during installation: /dev/xxx UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /var/lib/docker btrfs rw 0 2 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/btrfs btrfs noauto,subvol=/ 0 2
mount -av
systemctl start docker.socket docker.service containerd.service
aktuell aktives Docker-Subvolume ermitteln:
mount /mnt/btrfs cd /mnt/btrfs btrfs subvolume get-default .
→ Subvolume merken: ID 472 gen 428819 top level 5 path 20xxxxxx00
systemctl stop docker.socket docker.service containerd.service
btrfs subvolume snapshot 20xxxxxx00 $(date '+%Y%m%d')01
systemctl start docker.socket docker.service containerd.service
watch docker ps
modinfo btrfs modprobe btrfs grep btrfs /proc/filesystems→ Sollte bei Debian, Ubuntu und SuSE
btrfs ausgeben. RedHat unterstützt BTRFS nicht.