kalafoto - stock.adobe.com
Docker versus Podman: Containermanagement-Tools im Vergleich
Docker und Podman bieten ähnliche Funktionen für die Verwaltung von Containern. Docker ist die populärere Wahl, doch Podman bietet attraktive Sicherheitsfunktionen.
Docker ist für viele IT-Administratoren zum De-facto-Standard geworden und erfreut sich auch unter Entwicklern großer Beliebtheit. Podman bietet jedoch Sicherheitsfunktionen, die es in dieser Form für Docker nicht gibt, da Administratoren Podman als nicht privilegierter Benutzer und ohne Daemon ausgeführt werden kann.
Docker und Podman verfügen beide um einen ähnlichen Funktionsumfang, wie zum Beispiel Unterstützung zur Umsetzung der Laufzeit- und Image-Spezifikationen der Open Container Initiative (OCI) sowie die Möglichkeit, Befehle zum Erstellen und Verwalten von Containern zuzuordnen. Dennoch gibt es einige Unterschiede zwischen Docker und Podman, darunter Sicherheitsbedenken und die Abhängigkeit von Daemon-Programmen.
Da Podman keinen Daemon zum Entwickeln, Verwalten und Ausführen von OCI-Containern verwendet, muss es auf Linux laufen. Container können entweder als Root oder im Rootless-Modus ausgeführt werden. Docker verwendet einen Daemon, einen dauerhaften Hintergrundprozess, der alle Aufgaben der Containerverwaltung auf dem Host übernimmt. Es basiert auf einer Client- und Server-Architektur, wobei der Daemon die Rolle eines Servers übernimmt, während die Clients über die Befehlszeilenschnittstelle (CLI) kommunizieren.
Docker läuft problemlos mit einem nativen Windows-Daemon, um entweder Windows- oder Linux-basierte Images zu starten. Podman benötigt Version 2 des Windows Subsystems für Linux (WSL), um ordnungsgemäß zu funktionieren. Windows 10 muss daher mindestens auf dem Stand 20H1 sein, um mit Podman arbeiten zu können, da dies die erste Version war, die WSL2 enthielt.
Sicherheit
Ein wesentlicher Unterschied zwischen Docker und Podman betrifft die Sicherheit. Der Docker-Daemon erfordert Root-Rechte – das ist ein Sicherheitsrisiko. Es bedeutet auch, dass ein unsachgemäß konfigurierter Docker-Container möglicherweise uneingeschränkt auf das Host-Dateisystem zugreifen könnte. Administratoren verhindern dies, indem sie einige grundlegende Best Practices befolgen, zum Beispiel nur Container-Images von vertrauenswürdigen Anbietern verwenden, aber die Möglichkeit besteht dennoch.
Podman-Container hingegen können Administratoren als nicht-privilegierter Benutzer starten. Das verschafft Podman einen Vorteil gegenüber Docker, wenn es um die Sicherheit der Umgebungen geht. Allerdings können Administratoren als nicht privilegierter Benutzer keine Befehle ausführen, die Root-Rechte auf dem Host-System erfordern.
Dazu gehört das Mapping aller privilegierten Portnummern unter 1024 auf dem Host sowie des Standard-HTTP-Ports 80. Darüber hinaus verwenden sowohl Docker als auch Podman eine CLI als primäre Verwaltungsschnittstelle. Docker setzt jedoch einen REST-API-Endpunkt für die Kommunikation mit dem Daemon ein, und ältere Versionen verwenden einen TCP-Socket, der an die IP-Adresse localhost gebunden ist.
Dies macht die Umgebung verwundbar für einen Cross-Site-Forgery-Angriff. Docker hat diese Schwachstelle in Version 0.5.2 behoben, indem ein UNIX-Socket eingeführt wurde, über den Administratoren mit regulären Befehlen den Zugriff einschränken können. Da Podman nicht auf einen Daemon angewiesen ist, ist es nicht anfällig für diese Art von Angriffen.
Containerorchestrierung
Kubernetes hat sich im Bereich der Containerorchestrierung zum dominierenden Akteur entwickelt. VMware verwendet die Plattform als primäre Managementebene für VMs und alles, was mit laufenden Containern zusammenhängt. Kubernetes nutzt den Begriff Pod, um eine Sammlung von Containern zu definieren, die sich bestimmte Ressourcen teilen. Podman unterstützt dieses Konzept durch die Implementierung eines Pod-Befehls zur Verwaltung mehrerer Container als eine Einheit.
In ähnlicher Weise bietet Docker mehrere Optionen für die Containerorchestrierung. Docker Swarm ist das native Tool von Docker für die Verwaltung eines Clusters. Docker arbeitet gut mit Kubernetes zusammen, das von den meisten Entwicklungsteams bevorzugt wird. Für Windows-Bereitstellungen haben Administratoren die Möglichkeit, Kubernetes während des Installationsprozesses zu aktivieren, wodurch sie direkt vom Desktop oder Laptop aus vollen Zugriff auf die Kubernetes-Befehle haben.
Darüber hinaus können Administratoren ihre Anwendungen um das Modell der kontinuierlichen Integration und Bereitstellung herum aufbauen, bei dem Entwicklung und Tests überall auf der Grundlage einiger einfacher Konfigurationsdateien stattfinden können. Ein paar zusätzliche Schritte zum Ändern des Bereitstellungsziels sind alles, was erforderlich ist, wenn eine Version bereit für die Produktion ist.
Sowohl Podman als auch Docker entsprechen den OCI-Standards für Images, doch Podman ist allein schon wegen der Sicherheitsfunktionen einen Blick wert. Podman bietet zudem native Befehle zur Unterstützung beim Erstellen und des Testen von Pods mit Blick auf die Bereitstellung eines Produktionssystems mit Kubernetes.