Podman vs. Docker: Rootless Container als sichere Alternative
Docker hat die Container-Technologie popularisiert und ist heute Standard in der Softwareentwicklung. Podman ist eine von Red Hat entwickelte Alternative, die denselben Komfort bietet – aber ohne einige kritische Sicherheitsprobleme, die Docker inhärent hat.
Das größte Problem mit Docker: Der Daemon
Docker läuft über einen zentralen Daemon-Prozess (dockerd), der als root läuft. Das bedeutet:
- Jeder, der Docker-Commands ausführen darf, hat effektiv Root-Zugriff auf das System
- Wenn der Docker-Daemon kompromittiert wird, hat ein Angreifer Root auf dem Host
- In Multi-User-Umgebungen ist das ein erhebliches Sicherheitsrisiko
Das ist kein theoretisches Problem – es gibt mehrere dokumentierte Docker Privilege Escalation Exploits, die genau diese Angriffsfläche ausnutzen.
Podmans Lösung: Daemonless und Rootless
Podman verfolgt einen grundlegend anderen Ansatz:
Daemonless: Kein zentraler Prozess im Hintergrund. Jeder podman-Befehl spawnt direkt einen Prozess, der den Container verwaltet.
Rootless by Default: Container können von normalen Benutzerkonten gestartet werden. Podman nutzt User Namespaces, um Container zu isolieren, ohne Root-Rechte zu benötigen.
# Docker: Braucht Root oder docker-Gruppe (effektiv Root)
docker run nginx
# Podman: Läuft vollständig als normaler User
podman run nginx
Kompatibilität: Podman ist (fast) ein Docker-Drop-in
Das Beste an Podman: Die CLI ist zu 95% kompatibel mit Docker. Viele Teams nutzen einfach:
alias docker=podman
Das reicht für die meisten Workflows. Podman unterstützt dasselbe Image-Format (OCI), dieselben Dockerfiles und denselben Registry-Standard.
Was sich unterscheidet
Kein docker-compose (out of the box): Podman hat sein eigenes Tool namens podman-compose, aber das ist weniger ausgereift als Docker Compose. Alternativ gibt es Podman Desktop oder die Integration via podman play kube.
Pods statt nur Container: Podman hat das Konzept von "Pods" (wie in Kubernetes) eingebaut. Mehrere Container können in einem Pod zusammengefasst werden und teilen sich einen Network Namespace.
Systemd-Integration: Podman-Container können als systemd-Services laufen. Das macht sie in Production-Umgebungen oft einfacher zu verwalten als Docker-Container.
Performance-Vergleich
| Aspekt | Docker | Podman |
|---|---|---|
| Container-Startup | Schnell | Etwas langsamer (kein Daemon-Cache) |
| Resource-Overhead | Daemon läuft immer | Kein Overhead ohne aktive Container |
| Sicherheitsprofil | Root-Daemon | Rootless möglich |
| Kubernetes-Kompatibilität | Via Docker-Socket | Nativ (OCI-konform) |
| Docker Compose | ✅ Nativ | Via podman-compose |
| Multi-Arch-Builds | Gut | Gut |
Wann Podman die bessere Wahl ist
Enterprise und Production-Umgebungen
Wenn Security-Compliance eine Rolle spielt (ISO 27001, SOC 2, Banken, Healthcare), ist Podman oft Pflicht. Rootless Container erfüllen das Prinzip der minimalen Berechtigungen.
Red Hat / CentOS / Fedora Umgebungen
Podman ist in diesen Distributionen das Standard-Tool. Docker muss hier extra installiert werden – Podman ist bereits dabei.
Kubernetes-nahe Entwicklung
Wenn du sowieso auf Kubernetes deployst, ist Podman mit seinem Pod-Konzept näher am Ziel-Setup. Du kannst Kubernetes-Manifeste lokal mit podman play kube testen.
Wann Docker besser bleibt
Mac und Windows Development
Docker Desktop bietet eine polierte GUI-Erfahrung auf Mac und Windows. Podman Desktop existiert, ist aber noch weniger ausgereift.
docker-compose-heavy Workflows
Wenn dein Team stark auf Docker Compose setzt und komplexe Multi-Service-Setups hat, ist der Wechsel aufwendiger.
Einfachste Single-Developer-Setups
Für einen lokalen Entwickler ohne Security-Anforderungen macht Docker das Leben einfacher.
Meine Empfehlung
Für neue Production-Server empfehle ich heute Podman. Die Installation ist auf Linux trivial, die Kompatibilität ist hoch, und das Sicherheitsprofil ist deutlich besser.
# Fedora/RHEL/CentOS
dnf install podman
# Ubuntu/Debian
apt install podman
Für lokale Entwicklungsumgebungen und bestehende Docker-Compose-Workflows würde ich bei Docker bleiben – der Migrationsaufwand überwiegt den Sicherheitsgewinn auf einem Dev-Laptop.
Die Zukunft gehört aber rootlosen Containern. Mit der steigenden Bedeutung von Zero-Trust-Architekturen wird Podman weiter an Bedeutung gewinnen.