Podman ist eine Container-Engine, die mit den OCI-Containern kompatibel ist Spezifikation. Podman ist Teil von RedHat Linux, kann aber auch auf anderen Distributionen installiert werden.
Da es OCI-kompatibel 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’ 8217;sa Laufzeit?
Für viele Leute ist ein “Container” ist 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 zu den grundlegenden Containerisierungsfunktionen hinzu.
So installieren Sie Podman
Wenn Sie RedHat Linux verwenden, befindet sich Podman im Extras-Repository. Verwenden Sie den 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 beliebten Linux-Distributionen enthalten auch Podman in ihren Standard-Repositorys. Sie können podman installieren, dnf install podman oder pacman -S podman installieren, um es zu installieren.
Arbeiten mit Containern und Bildern
Podmans CLI ist bewusst an Docker's angepasst. 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 als podman bezeichnen und keinen Unterschied im täglichen Gebrauch feststellen. Natürlich ist nicht jede Funktion verfügbar, aber beim Versuch, Docker Swarm-Befehle zu verwenden, wird ein Fehler ausgegeben, da Podman nichts Äquivalentes zu Swarm hat.
Was ist anders an Podman?
Obwohl es sich ähnlich anfühlt wie Docker, hat Podman einige charakteristische Unterschiede. An erster Stelle und wohl am bedeutendsten ist seine Architektur. Podman ist ohne Daemon. Es gibt keinen langlebigen Prozess zur Verwaltung Ihrer Container.
Wenn Sie einen podman-Befehl ausführen, sind Sie direkt mit dem Prozess verbunden, der Ihre Container startet und Ihre Bilder abruft. Die CLI von Docker ist von einer Verbindung zum Docker-Daemon abhängig. 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 verringert 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 bietet einzigartige Funktionen, die Docker vollständig fehlen . In Podman können Container “Pods” die zusammenarbeiten. Es ähnelt dem Kubernetes-Pod-Konzept.
Verwenden Sie zum Erstellen eines Pods den Befehl pod create:
podman pod create –name my-pod
Container werden hinzugefügt zu Pods durch Einfügen des Flags –pod mit podman run:
podman run –pod my-pod –name image-1 my-image:latest podman run –pod my-pod –name image-2 other-image:latest
Container im Pod können aggregiert verwaltet werden indem Sie podman pod-Befehle verwenden:
podman kill my-pod # Alle Container töten podman restart my-pod # neu starten podman stop my-pod # Alle Container stoppen
Das Pod-Konzept ist leistungsstark, da es Ihnen ermöglicht Verwalten Sie mehrere Container zusammen. Sie können App-Container wie ein Front-End, ein Back-End und eine Datenbank erstellen, sie zu einem Pod hinzufügen und sie gemeinsam verwalten.
>Am nächsten kommt Docker dazu mit Compose. Für die Verwendung von Compose müssen Sie eine docker-compose.yml-Datei schreiben und die separate docker-compose-Binärdatei verwenden. Mit Podman können Sie Pods mit einem Befehl erstellen, ohne das Terminal verlassen zu müssen.
Wenn Sie eine Pod-Definition exportieren müssen, erstellt Podman ein Kubernetes-kompatibles YAML-Manifest. Sie können das Manifest nehmen und direkt auf einen Kubernetes-Cluster anwenden. Dadurch wird die Lücke zwischen der Ausführung eines Containers in der Entwicklung und der Einführung in die Produktionsinfrastruktur geschlossen.
podman kube generieren
Rootless-Container
Podman unterstützt Rootless-Container. Dies hilft Ihnen, Ihre Sicherheit zu sperren, indem verhindert wird, dass Container als Root-Benutzer des Hosts ausgeführt werden. Docker unterstützt jetzt den Rootless-Modus als Daemon-Konfigurationsoption. Podman hatte vor Docker rootless und legt mehr Wert auf seine Verwendung.
Installieren Sie zuerst slirp4netns:
yum install slirp4netns
Konfigurieren Sie als nächstes eine Reihe von benutzerbezogenen 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.
Nun, ’ ;sind 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 ist podman standardmäßig auf den aktuellen Benutzer beschränkt. Ihre Bilder und Container werden im Ordner $HOME Ihres Nutzers gespeichert. Wenn Sie podman ps oder podman images ausführen, sehen Sie nur Ihre Inhalte und nicht alle Ressourcen im System.
Schlussfolgerung
Podman ist ein OCI -kompatible Container-Laufzeit, die ohne Daemon funktioniert. Die CLI implementiert alle Docker-Kernbefehle. Sie können problemlos 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 mit Befehlen auf Pod-Ebene stoppen, neu starten und löschen.
Podman hilft Ihnen auch beim Wechsel zu Container-Orchestrierungsdiensten. Durch die Möglichkeit, Kubernetes-kompatibles YAML zu exportieren, passt Podman besser zu vielen containerisierten Produktionsumgebungen. Entwickler und Betreiber können dasselbe Tool verwenden, um ihre Container zu verwalten, was mehr Zusammenarbeit und Flexibilität ermöglicht.