Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:docker:btrfs

Docker mit BTRFS als Storage

Hier geht es darum, alles was in Docker ist mit Snapshots sichern zu können. Und nicht um Docker mit BTRFS statt overlay

BTRFS vorbereiten

Voraussetzungen:

  • kernel unterstützt BTRFS 1)
  • Paket:
    • Debian (ab 12): btrfs-progs
  • Freie Partition oder freies Logical Volume
du -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

containerd Daten ins Docker-Verzeichnis verschieben

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
/etc/containerd/config.toml
…
root = "/var/lib/docker/containerd"
…
cd /var/lib
mv containerd/ docker
ln -s docker/containerd containerd

Docker Daten in BTRFS verschieben

systemctl stop docker.socket docker.service containerd.service
cd /var/lib/
shopt -s dotglob
mv docker/* /mnt/btrfs/$(date '+%Y%m%d')00
/etc/fstab
…
# 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

ohne containerd:

Snapshot erstellen

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

Container stoppen

systemctl stop docker.socket docker.service containerd.service

ohne containerd:

Snapshot erstellen

btrfs subvolume snapshot 20xxxxxx00 $(date '+%Y%m%d')01

Container starten

systemctl start docker.socket docker.service containerd.service

ohne containerd:

Starten überprüfen

watch docker ps
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/btrfs.txt · Zuletzt geändert: 2026/05/03 09:07 von ingo_wichmann