Podman ist eine Container-Engine, die mit der OCI-Container-Spezifikation kompatibel ist. Podman ist Teil von RedHat Linux, kann aber auch auf anderen Distributionen installiert werden.
Da es OCI-konform ist, kann Podman als Drop-In-Ersatz für die bekanntere Docker-Laufzeit verwendet werden. Die meisten Docker-Befehle können direkt in Podman-Befehle übersetzt werden.
Hier sehen Sie, wie sich die beiden Laufzeiten stapeln.
Was ist eine Laufzeit?
Für viele Leute ist ein „Container“ immer noch ein „Docker-Container“. Dies ist keine genaue Darstellung des aktuellen Container-Ökosystems. Docker erstellt OCI-Container-Images, die mit anderen kompatiblen Laufzeiten verwendet werden können. Kubernetes ist ein Beispiel, während Podman ein anderes ist.
Infolgedessen haben Podman und Docker überlappende Kernfunktionen. Beide erzeugen Images, die der andere zum Ausführen von Containern verwenden kann. Die beiden Laufzeiten fügen dann ihre eigenen Spezialisierungen zusätzlich zu den grundlegenden Containerisierungsfunktionen hinzu.
So installieren Sie Podman
Wenn Sie RedHat Linux verwenden, finden Sie Podman in den extras
Repository. Verwenden Sie subscription-manager
um das Repository hinzuzufügen. Sie können dann yum
verwenden um Podman zu installieren.
su - subscription-manager repos --enable rhel-7-server-extras-beta-rpms yum -y install podman
Die meisten anderen gängigen Linux-Distributionen enthalten Podman ebenfalls in ihren Standard-Repositorys. Sie können apt install podman
, dnf install podman
oder pacman -S podman
um es zu installieren.
Arbeiten mit Containern und Images
Die CLI von Podman ist bewusst an der von Docker ausgerichtet. Das bedeutet, dass Sie vertraute Docker-Befehle verwenden können, um mit Podman-Containern zu interagieren:
podman pull my-image:latest podman run my-image:latest --name my-container podman ps podman rm my-container
Podman sollte Docker-Benutzern sofort vertraut sein. Sie könnten docker
aliasieren zu podman
und im täglichen Gebrauch keinen Unterschied feststellen. Natürlich sind jedoch nicht alle Funktionen verfügbar – der Versuch, Docker Swarm-Befehle zu verwenden, löst einen Fehler aus, da Podman nichts Äquivalentes zu Swarm hat.
Was ist anders an Podman?
Obwohl es sich Docker ähnlich anfühlt, weist Podman einige Unterschiede auf. Das erste und wohl bedeutendste ist seine Architektur. Podman ist dämonlos – Es gibt keinen langlebigen Prozess zur Verwaltung Ihrer Container.
Wenn Sie einen podman
ausführen Befehl, sind Sie direkt mit dem Prozess verbunden, der Ihre Container startet und Ihre Bilder abruft. Dockers CLI ist auf eine Verbindung zum Docker-Daemon angewiesen. Die CLI sendet Befehle an den Daemon, und der Daemon verarbeitet sie dann, um Container zu erstellen.
Das Modell von Podman hilft, einige der Bedenken in Bezug auf die Docker-Sicherheit auszuräumen. Das Fehlen eines Daemons reduziert die Angriffsfläche des Containers erheblich. Wenn Sie Fernzugriff benötigen, stellt Podman eine REST-API bereit, mit der Sie mit allen unterstützten Ressourcentypen interagieren können.
Pods
Podman verfügt über einzigartige Funktionen, die Docker vollständig fehlen. In Podman können Container „Pods“ bilden, die zusammenarbeiten. Es ähnelt dem Kubernetes-Pod-Konzept.
Um einen Pod zu erstellen, verwenden Sie pod create
Befehl:
podman pod create --name my-pod
Container werden zu Pods hinzugefügt, indem --pod
eingefügt wird Flag mit podman run
:
podman run --pod my-pod --name image-1 my-image:latest podman run --pod my-pod --name image-2 another-image:latest
Container im Pod können mithilfe von podman pod
aggregiert verwaltet werden Befehle:
podman kill my-pod # Kill all containers podman restart my-pod # Restart all containers podman stop my-pod # Stop all containers
Das Pod-Konzept ist leistungsstark, da es Ihnen ermöglicht, mehrere Container aggregiert zu verwalten. Sie können App-Container wie ein Front-End, ein Back-End und eine Datenbank erstellen, sie zu einem Pod hinzufügen und gemeinsam verwalten.
Am nächsten kommt Docker dem mit Compose. Die Verwendung von Compose erfordert das Schreiben einer docker-compose.yml
-Datei und verwenden Sie das separate docker-compose
binär. Mit Podman können Sie Pods mit einem Befehl erstellen, ohne das Terminal zu verlassen.
Wenn Sie die Definition eines Pods exportieren müssen, erstellt Podman ein Kubernetes-kompatibles YAML-Manifest. Sie können das Manifest nehmen und es direkt auf einen Kubernetes-Cluster anwenden. Dadurch wird die Lücke zwischen dem Ausführen eines Containers in der Entwicklung und seiner Einführung in der Produktionsinfrastruktur verringert.
podman generate kube
Rootless-Container
Podman unterstützt Rootless-Container. Dies hilft Ihnen, Ihre Sicherheit zu schützen, indem verhindert wird, dass Container als root
des Hosts ausgeführt werden Benutzer. Docker unterstützt jetzt den Rootless-Modus als Daemon-Konfigurationsoption. Podman war vor Docker wurzellos und legt einen größeren Wert auf dessen Verwendung.
Installieren Sie zuerst slirp4netns
:
yum install slirp4netns
Konfigurieren Sie als Nächstes eine Reihe von benutzerspezifischen Netzwerk-Namespaces:
echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf sysctl -p /etc/sysctl.d/userns.conf
Dieser Befehl ermöglicht die Verwendung von Netzwerk-Namespaces, ohne root
zu sein .
Jetzt sind Sie bereit, einen Rootless-Container auszuführen! Verbinden Sie sich als normaler Benutzer mit dem Server. Starten Sie einen neuen Container mit podman run
. Es wird mit der UID Ihres Benutzerkontos anstelle von root
erstellt .
Neben vollständig wurzellosen Namespaces, podman
ist standardmäßig auf den aktuellen Benutzer beschränkt. Ihre Bilder und Container werden im $HOME
Ihres Benutzers gespeichert Mappe. Wenn Sie podman ps
ausführen oder podman images
, sehen Sie nur Ihre Inhalt statt jeder Ressource auf dem System.
Schlussfolgerung
Podman ist eine OCI-konforme Containerlaufzeit, die ohne Daemon funktioniert. Die CLI implementiert alle wichtigen Docker-Befehle. Sie können ganz einfach zu Podman wechseln oder es zusammen mit einer bestehenden Docker-Installation verwenden.
Im Gegensatz zu Docker bietet Podman erstklassige Unterstützung für die Verwaltung mehrerer Container. Das Pod-Modell erleichtert die Arbeit mit einem Stapel von Diensten. Sie können alle zugehörigen Container stoppen, neu starten und löschen, indem Sie Befehle auf Pod-Ebene verwenden.
Podman ist auch bereit, Ihnen beim Wechsel zu Container-Orchestrierungsdiensten zu helfen. Durch die Möglichkeit, Kubernetes-kompatibles YAML zu exportieren, passt Podman besser zu vielen containerisierten Produktionsumgebungen. Entwickler und Betreiber können das gleiche Tool verwenden, um ihre Container zu verwalten, was mehr Zusammenarbeit und Flexibilität ermöglicht.