Podman ist mächtig, flexibel und extrem nah an den grundlegenden Linux-Mechanismen gebaut. Gerade diese Nähe macht es jedoch anspruchsvoller als klassische Container-Stacks, die vieles hinter einem monolithischen Daemon verbergen. Wer produktionsnahe Multi-Container-Anwendungen ohne Orchestrator betreibt, trifft früher oder später auf Stellen, an denen das Podman-Modell bewusst Grenzen setzt — oder an denen typische Missverständnisse zu unerwartetem Verhalten führen. Diese Stolperstellen sind nicht zufällig, sondern Ausdruck eines Designs, das Sicherheit, Transparenz und Daemonlosigkeit priorisiert.
Rootless-Container sind eine der größten Stärken von Podman. Sie ermöglichen Entwicklung und Betrieb ohne Root-Rechte. Gleichzeitig bringt rootless Betrieb Einschränkungen mit sich, die auf Kernel-Design und User Namespaces zurückgehen:
Ein rootless Container kann nicht auf privilegierte Ports binden:
-p 80:80 # rootless: nicht möglich
Typische Symptome:
Workaround: Portmapping auf höhere Ports oder systemd-Socket-Aktivierung.
slirp4netns bietet funktionale, aber nicht performante NAT-Funktionalität. Grenzen:
Für interne Tests irrelevant, für produktionsnahe Edge-Anwendungen mit hohem Traffic aber entscheidend.
Host-UID 100000 entspricht in Containern root. Ein
klassischer Grund für:
Rootless erfordert bewusstes Arbeiten mit Ownership-Konzepten, insbesondere bei bind mounts.
Pods sind keine Containergruppen, sondern shared-namespaces-Konstrukte. Daraus ergeben sich Stolperstellen:
Da alle Container denselben Netzwerknamespace nutzen, gilt:
Viele Entwickler gehen fälschlich von docker-compose-Semantik aus, bei der Ports pro Container getrennt sind.
Wenn der Infrastrukturcontainer endet, endet der Pod.
Ursachen:
Wizardry: Manchmal glauben Anwender, der Pod sei „verschwunden“, obwohl nur der Infra-Container gestorben ist.
Bei geteiltem PID-Namespace:
PID-Sharing ist mächtig, aber nicht für jeden Anwendungsfall geeignet.
Podman nutzt container/storage und overlayfs — ein sehr flexibles, aber anspruchsvolles System. Typische Stolperfallen:
Grenzen:
Für Datenbanken im rootless Betrieb ist das nicht ideal.
Durch das Fehlen eines zentralen Daemons kann es vorkommen, dass:
Podman löscht nie automatisch persistente Daten — das ist positiv, aber erfordert Wartung.
Mischt man rootless Container mit Host-Dateien, entstehen oft unklare Rechteverhältnisse. Ein Paradebeispiel:
„Warum kann der Container nicht schreiben?“ gehört zu den häufigsten Supportanfragen.
Docker-Nutzer erwarten:
Podman unterscheidet anders:
Oft führen nicht verwendete Konzepte (z. B.
--network=host rootless) zu Verwirrung.
Podman schreibt Regeln über Netfilter/nftables. Typische Fehler:
Wer an der Firewall schraubt, sollte verstehen, dass Podman die Regeln selbst managed.
Podman Compose ist formatkompatibel, aber nicht verhaltensidentisch zu docker-compose.
Typische Stolperfallen:
depends_on
garantiert nicht die StartreihenfolgeDocker Compose v2 wertet depends_on.condition und
Healthchecks aus. Podman Compose nicht. Anwendungen, die DB-Startzeiten
voraussetzen, können ohne „Wait-for-it“-Skripte fehlschlagen.
Entwickler wundern sich, warum zwei Services nicht beide denselben externen Port nutzen dürfen — die Erklärung lautet: ein Pod, ein Netzwerknamespace.
Docker-spezifische Logtreiber sind nicht unterstützt. Wer Logstash/Fluentd-Treiber nutzt, erlebt Überraschungen.
Ohne Orchestrator fehlen:
Viele Entwickler überschätzen bewusst das, was Podman leisten soll — und unterschätzen das, was Podman eigentlich lösen will.
Die häufigste Ursache für Stolperfallen ist ein ungeklärtes mentales Modell: Viele denken noch in Docker-Kategorien („ein Container = ein Service“) oder in Kubernetes-Kategorien („der Pod wird schon von allein wieder starten“).
Podman verlangt dagegen:
Das ist kein Nachteil, sondern Transparenz — aber eine Transparenz, die man verstehen muss.