Blog

Podman, die kostenlose Container-Engine als Alternative zu Docker

Avinash Pancham

Aktualisiert Oktober 16, 2025
8 Minuten

Die Containerisierung treibt die nächste Welle zur Cloud an, mit Docker als die Software für die Interaktion mit dem Container-Ökosystem. Ab dem 31. Januar 2022 wird Docker Desktop für große Unternehmen jedoch nicht mehr kostenlos sein. Podman ist eines der Tools, die Docker ersetzen sollen und hat in den letzten Monaten viel an Zugkraft gewonnen. In diesem Blog werde ich näher auf Podman eingehen und erläutern, was mir daran gefällt, aber lassen Sie uns zunächst mit Docker beginnen!

Docker

Docker wurde 2013 veröffentlicht und hat sich seitdem als Containerisierungslösung durchgesetzt. Docker hat Container nicht erfunden, aber es hat die Entwicklung und die Arbeit mit Containern erheblich vereinfacht, und das hat es zu einem Erfolg gemacht. Das Produkt Docker wurde sogar so populär, dass sein Name oft austauschbar mit Containern verwendet wird (z.B. Docker-Image anstelle von Container-Image). Nach früheren (gescheiterten) Versuchen, mit Docker-bezogenen Angeboten Geld zu verdienen, hat das Unternehmen hinter Docker beschlossen, sein Open-Source-Angebot umzugestalten. Die Open-Source-Version von Docker umfasste bisher Docker und Docker Desktop, aber ab dem 31. Januar 2022 Docker Desktop wird für große Unternehmen nicht mehr kostenlos sein. Für kleine Unternehmen (weniger als 250 Mitarbeiter UND weniger als 10 Millionen Dollar Jahresumsatz), für die private Nutzung, für den Bildungsbereich und für nicht-kommerzielle Open-Source-Projekte bleibt Docker Desktop kostenlos.

Docker Desktop

Docker ist die bekannte Containerisierungstechnologie und bleibt kostenlos, aber was ist Docker Desktop? Wie bereits erwähnt, hat Docker die Container nicht erfunden, aber sie haben die Arbeit mit Low-Level-Funktionen des Linux-Kernels (wie cgroups und Namespaces) vereinfacht, die zusammen einen Container bilden. Diese Funktionen des Linux-Kernels sind unter Windows und MacOS nicht verfügbar, und hier kommt Docker Desktop ins Spiel. Docker Desktop ist eine Anwendung für Nicht-Linux-Rechner mit mehreren FunktionenDie wichtigste Funktion ist jedoch das Aufsetzen einer Linux-VM auf einem Host-Rechner, damit Docker ausgeführt und nahtlos in den Host-Rechner integriert werden kann. Diese jüngste Entscheidung bezüglich Docker Desktop betrifft also nur Nicht-Linux-Benutzer. Es sei darauf hingewiesen, dass Windows-Benutzer auch WSL2 verwenden können, um Docker unter Linux auszuführen, so dass die Verwendung von Docker Desktop nicht erforderlich ist. Meiner Erfahrung nach ist dies jedoch keine übliche Vorgehensweise.

Podman eingeben

Die Nachricht über Docker Desktop führte zu gemischten Reaktionen in der Technologiebranche und lenkte die Aufmerksamkeit auf die Konkurrenten von Docker. Einer dieser Konkurrenten ist das vollständig quelloffene Tool Podmandas auch von Red Hat unterstützt wird. Podman ist genau wie Docker eine Container-Engine - in der Kubernetes-Community auch als High-Level-Container-Runtime oder Container-Runtime bekannt. Die Container-Engine ist das Tool, das die wichtigsten Container-Operationen ermöglicht: Benutzerinteraktion über eine API, Abrufen von Images aus einer Container-Registry und Ausführen von Containern (oft durch Delegation an eine Container-Laufzeitumgebung auf niedriger Ebene). Neben den Kernfunktionen der Container-Engine bietet Docker auch Funktionen zur Erstellung von Container-Images. Podman hat sich entschieden, der Unix-Philosophie zu folgen "Jedes Programm soll eine Sache gut machen und konzentriert sich daher auf die Funktionalität der Container-Engine. Begrenzte Funktionen zur Erstellung von Container-Images sind jedoch in Podman verfügbar, wenn Sie den Code von Buildah, ein von Red Hat unterstützter Container-Image-Builder.

Warum Podman?

Warum sollten Sie also Podman in Betracht ziehen? Ich persönlich habe es aus den folgenden Gründen getan:
  1. Kompatibilität: Podman ahmt die Befehlszeilenschnittstelle von Docker nach, so dass Sie die Befehle podman pull, podman push, podman build, podman run und podman exec (einschließlich aller Optionen) auf die gleiche Weise wie bei Docker verwenden können, um mit dem Container zu interagieren. Dies ist möglich, da die internen Schritte der Container-Engine bei beiden Tools ähnlich sind, was das Ergebnis der Einhaltung vieler gleicher Standards ist. Auf diese Standards gehe ich im Abschnitt Kompatibilität näher ein.
  2. Podman Rechner: Wie Docker verwendet auch Podman spezifische Linux-Kernel-Funktionen zur Erstellung von Containern und erfordert daher eine Linux-VM auf Nicht-Linux-Rechnern. Windows-Benutzer können Podman auf WSL2 installieren, aber für MacBook-Benutzer (wie mich) wird Podman zusammen mit einer integrierten Linux-VM (Podman-Maschine) kostenlos ausgeliefert. Im Abschnitt Podman-Maschine werde ich dies näher erläutern.
  3. Architektur: Podman hat eine andere Architektur als Docker, die sich nicht auf einen Daemon stützt. Sie ist zwar nicht so leistungsfähig, aber dafür sicherheitsorientierter, da sie standardmäßig die Ausführung durch Nicht-Root-Mitglieder erlaubt. Mehr zu dieser Einrichtung finden Sie im Abschnitt Architektur.

Kompatibilität

Das Container-Ökosystem wird durch mehrere Standards geregelt. Speziell für Container-Engines wie Docker und Podman sind die folgenden Standards relevant: [caption id="attachment_54825" align="aligncenter"] Die Containerlandschaft wird von Standards bestimmt: OCI, CNI und CNM[/caption]
  • OCI Bild Spezifikation: standardisiert, wie Container-Images aufgebaut sind und wie sie erstellt werden sollten. Ein Image sollte enthalten:
    • ein Image-Manifest: JSON-Datei mit Verweisen auf die Dateisystemebenen und die Image-Konfiguration, die das Container-Image verwenden wird.
    • eine Reihe von Dateisystemschichten: eine komprimierte tar-Datei pro Schicht, wobei die erste Schicht eine tar-Datei mit dem Inhalt des Basis-Images (d.h. des Dateisystems) ist und alle nachfolgenden Schichten die inkrementellen Datei-(System)-Updates sind, die pro Schicht angewendet werden. Diese tar-Dateien werden entpackt, wenn sie von der Container-Engine auf die Festplatte gezogen werden.
    • eine Image-Konfiguration: JSON-Datei, die die konfigurierbaren Argumente des Containers wie Einstiegspunkt, cmd, Umgebungsvariablen, Labels, exponierte Ports usw. angibt.
  • OCI-Laufzeit-Spezifikation: standardisiert, wie ein Container von einem entpackten Image auf der Festplatte ausgeführt wird. Container-Engines delegieren diese Aufgabe in der Regel an eine Low-Level-Container-Laufzeitumgebung. OCI bietet zu diesem Zweck eine Referenzimplementierung einer Low-Level-Container-Laufzeitumgebung namens "runc" (ursprünglich von Docker entwickelt), die von vielen Container-Engines wie Docker und Podman verwendet wird.
  • CNI und CNM: standardisiert, wie eine Container-Engine Container über verschiedene Netzwerk-Plugins mit Netzwerken versorgen kann. CNI ist der gängige Netzwerkstandard, der u.a. von Podman und Kubernetes verwendet wird. Docker hat sich entschieden, sein eigenes Netzwerkmodell namens CNM zu schaffen, aber dieser Standard ist weniger populär als CNI.
Sowohl Podman als auch Docker halten sich an die oben genannten OCI-Standards für Container-Engines, die sicherstellen, dass ihre Eingabe (d.h. die Image-Struktur) und Ausgabe (d.h. die Container-Erstellung) gleich sind. Die von Podman und Docker befolgten Standards für die Vernetzung von Containern unterscheiden sich zwar, aber beide Standards erzeugen das gleiche Ergebnis (d.h. die Vernetzung eines Containers). Daher kann Podman ohne Probleme mit Docker ausgetauscht werden.

Podman Maschine

Podman ist vollständig quelloffen, was eine breite Akzeptanz des Tools ermöglicht und schnelle Verbesserungen auf der Grundlage von Anfragen und Bemühungen der Gemeinschaft erlaubt. Dies wurde 2021 demonstriert, als die Podman-Maschine in den Podman-Quellcode integriert wurde. Derzeit besteht die Podman-Maschine aus Folgendem Komponenten:
    1. QEMU plus HVF: Virtualisierungssoftware
    2. Fedora CoreOS: Die virtualisierte Linux-Distribution
    3. Ignition: Konfigurationsmanagement-Software für Fedora
    4. gvisor-tap-vsock: Arrangiert die Port-Zuordnung von VM zu Host-Maschine
Allerdings ist die Einrichtung des Podman-Rechners im Vergleich zu Docker Desktop noch recht einfach. Derzeit ist es zum Beispiel nicht möglich Dateien von einem MacOS-Host einhängen in einen Container zu übertragen, ohne sie vorher in die Podman-Maschine einzubauen. Glücklicherweise gibt es ein laufendes Untersuchung durch die Community, um Podman machine zu einer Podman Desktop Lösung weiterzuentwickeln, die dem Docker Desktop ähnlicher ist!

Architektur

Docker und Podman sind zwar beide Container-Engines, aber sie sind auf unterschiedliche Weise aufgebaut. Docker verwendet ein Client-Server-Modell, bei dem das Docker CLI mit einem Docker-Daemon kommuniziert, der alle Container als Kindprozesse erzeugt. Podman verwendet ein traditionelles fork-exec-Modell, bei dem die Podman CLI die Container als Kindprozesse des Benutzers erzeugt. [caption id="attachment_54826" align="aligncenter" width="832"] Links: Docker-Architektur, Rechts: Podman-Architektur
[/caption] Der Docker-Daemon ist für die Interaktion mit der Container-Engine undEr speichert alle Status- und Lock-Informationen über Container im Speicher. Die Einrichtung mit einem In-Memory-Daemon ist aus Sicht der Leistung vorteilhaft, schafft aber einen Single Point of Failure, da sich fatale Fehler im Docker-Daemon auf laufende Container auswirken (die entweder beendet werden oder verwaist sind). Darüber hinaus ist der Daemon-Ansatz aus Sicht der Rechnungsprüfung weniger sicher, da allen Containern (unabhängig vom Benutzer) die Benutzer-ID des Docker-Daemons zugewiesen wird. Podman hingegen ist daemonlos. Der Benutzer interagiert direkt mit dem Container-Ökosystem über Tools der unteren Ebene wie libpod (Erstellen von Containern) und conmon (Anhängen an und Überwachen von laufenden Containern). Jedem von Podman erstellten Container wird die ID des Benutzers zugewiesen und er verfügt über seine eigene conmon-Instanz, so dass es keinen Single Point of Failure gibt. Status- und Lock-Informationen zu Containern werden auf dem Dateisystem des Hosts gespeichert und sind über die Podman CLI zugänglich. Bis vor kurzem hatte Podman aufgrund seines daemonlosen Aufbaus auch einen Sicherheitsvorteil gegenüber Docker: den Rootless-Modus. Über User-Namespaces erlaubt der Rootless-Modus Nicht-Root-Benutzern auf dem Host-Rechner, Root-Container auszuführen. Dies verringert die Angriffsfläche von Podman, da bösartige Container keine Root-Rechte auf dem Host-Rechner erhalten können. Podman läuft standardmäßig ohne Root, unterstützt aber Benutzer, die Podman als Root ausführen, indem sie ihre Berechtigungen erhöhen. In den meisten Fällen wird Docker über einen Daemon mit Root-Rechten ausgeführt, aber seit Dezember 2020 unterstützt es auch die Ausführung ohne Root-Rechte (allerdings über eine separate Installation). Da Podman ohne Root-Rechte ein Thema für sich ist, verweise ich für weitere Informationen auf die folgenden Blogs: Wie funktioniert der wurzellose Podman und Podman und Benutzer-Namensräume.

Abschließende Gedanken

Podman ist eine Container-Engine, die vollständig quelloffen, OCI-konform und von Haus aus sicher ist. Angesichts der jüngsten Aktualisierung des Geschäftsmodells von Docker machen diese Eigenschaften von Podman zusammen mit der Docker nachempfundenen CLI Podman zu einer attraktiven, sofort einsatzbereiten Container-Engine-Alternative zu Docker. Wenn ich Sie für Podman begeistern konnte, dann empfehle ich Ihnen einen Blick auf Podman's Seite mit Installationsanweisungen um es auszuprobieren!

Verfasst von

Avinash Pancham

Contact

Let’s discuss how we can support your journey.