Docker on SUSE: Setup & Btrfs Integration (Artikel 163)
Installation und Betrieb von Docker unter SUSE. Erfahren Sie alles über den spezialisierten Btrfs-Storage-Driver, die Verwaltung via YaST und Sicherheits-Best-Practices.
# Docker on SUSE: Container-Performance auf Btrfs
TL;DR / Management Summary Während Red Hat Docker komplett verbannt hat, unterstützt SUSE den Docker-Dämon weiterhin offiziell. Das Besondere in der SUSE-Welt ist die perfekte Integration in das Btrfs-Dateisystem: Docker nutzt hierfür einen nativen Storage-Driver, der Snapshots für Layer nutzt, was deutlich performanter als das klassische
overlay2auf Ext4 ist. Ein Senior Admin muss jedoch wissen, dass SUSE für neue Projekte Podman empfiehlt (siehe Artikel 164).
# 1. Einführung & Architektur
Docker und der Btrfs-Vorteil.
In SUSE ist Docker eng mit dem Dateisystem verzahnt. Anstatt Dateien in komplexen Verzeichnisstrukturen zu schichten, nutzt Docker Btrfs-Subvolumes für jeden Image-Layer.
# Die Architektur-Elemente (Mermaid)
graph TD
A[Docker CLI] --> B[Docker Daemon: dockerd]
B --> C[containerd runtime]
B -->|Storage Driver| D[Btrfs Storage Driver]
D --> E[Btrfs Root FS: /var/lib/docker/btrfs]
E --> F[Snapshot per Layer]
G[YaST Module] --> B
# 2. Installation & Erstes Setup
Container bereitstellen.
# Schritt 1: Pakete installieren
sudo zypper install docker yast2-docker
sudo systemctl enable --now docker
# Schritt 2: User-Berechtigungen
Standardmäßig darf nur Root Docker-Befehle ausführen.
sudo usermod -aG docker <username>
# Danach ab- und anmelden
# 3. Die SUSE-Besonderheit: Storage Driver
Btrfs im Einsatz.
Prüfen Sie nach der Installation, welcher Treiber aktiv ist:
docker info | grep "Storage Driver"
# Output sollte 'btrfs' sein.
Vorteil: Wenn Sie das System via Snapper (Artikel 154) zurückrollen, können Sie entscheiden, ob Sie die Docker-Images mit zurückrollen wollen, da sie Teil der Btrfs-Hierarchie sind.
# 4. Day-2 Operations: Management via YaST
Container grafisch überwachen.
SUSE bietet ein eigenes Modul:
sudo yast2 docker
Hier können Sie:
- Images suchen und laden.
- Laufende Container sehen und deren Logs lesen.
- Container starten/stoppen, ohne das CLI nutzen zu müssen.
# 5. Troubleshooting & “War Stories”
Wenn der Wal strandet.
# Story 1: “Das volle /var/lib/docker Subvolume”
Symptom: df -h zeigt Platz an, aber Docker meldet “No space left on device”.
Ursache: Das Btrfs-Kontingent (Quota) für das Docker-Subvolume ist erreicht, oder die Metadaten-Chunks sind voll.
Lösung: Führen Sie btrfs balance start /var/lib/docker aus und löschen Sie ungenutzte Images mit docker image prune -a.
# Story 2: “Inkompatible Overlay-Rules”
Symptom: Ein Image, das auf Ubuntu gebaut wurde, startet unter SUSE nicht mit Fehlermeldungen über Dateizugriffe.
Ursache: Das Image erwartet overlay2 Verhalten, aber SUSE nutzt den btrfs Treiber. Selten, aber möglich bei sehr speziellen Datei-Sperren.
Lösung: Stellen Sie Docker in der /etc/docker/daemon.json testweise auf overlay2 um (erfordert Neustart und Datenverlust in /var/lib/docker!).
# 6. Fazit & Empfehlung
- Bestehendes: Docker ist unter SUSE extrem stabil und performant durch die Btrfs-Integration.
- Neues: Nutzen Sie für neue Deployments Podman (Artikel 164), da es die strategische Richtung von SUSE für SLES 15 und 16 ist.
- Registry: Nutzen Sie die offizielle SUSE-Registry
registry.suse.comfür gehärtete Basis-Images.
# Anhang: Cheatsheet
| Aufgabe | SUSE / CLI Befehl |
|---|---|
| Docker Info | docker info |
| Image ziehen | docker pull registry.suse.com/suse/sle15:latest |
| Status prüfen | systemctl status docker |
| Ressourcen-Check | docker stats |
| Alles löschen | docker system prune |
| YaST Modul | yast2 docker |
| Log-Datei | journalctl -u docker -f |