Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| — |
admin_grundlagen:docker:btrfs [2026/01/25 13:45] (aktuell) ingo_wichmann angelegt |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== 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 (ab 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 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/* | ||
| + | <file txt /etc/fstab> | ||
| + | … | ||
| + | # 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,subvol=/ 0 2 | ||
| + | </file> | ||
| + | mount -av | ||
| + | tar -xf docker.tar.zst | ||
| + | rm docker.tar.zst | ||
| + | |||
| + | systemctl start docker.socket | ||
| + | |||
| + | ===== 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 ====== | ||
| + | <code json /etc/docker/daemon.json> | ||
| + | { | ||
| + | "storage-driver": "btrfs" | ||
| + | } | ||
| + | </code> | ||
| + | systemctl start docker.socket | ||
| + | systemctl start docker.service | ||
| + | |||
| + | prüfen: | ||
| + | docker info | ||
| + | -> ''Storage Driver: btrfs'' | ||
| + | |||