Zu Abschnitt

Was ist Podman?

URL kopieren

Podman (kurz für POD-Manager) ist ein Open Source-Tool, mit dem Sie Container entwickeln, managen und ausführen können. Das Tool wurde von Red Hat® Engineers in Zusammenarbeit mit der Open Source Community entwickelt, und es verwaltet das gesamte Container-IT-Ökosystem mithilfe der libpod-Library. 

Die integrative Architektur ohne Daemon macht Podman zu einer zugänglichen, sicherheitsorientierten Option für die Verwaltung von Containern. Mit den zugehörigen Tools und Funktionen wie Buildah und Skopeokönnen Entwicklungsteams die Container-Umgebungen an ihre Bedürfnisse anpassen. Sie können außerdem die Vorteile von Podman Desktop nutzen, einer grafischen Benutzeroberfläche (GUI) zur Verwendung von Podman in lokalen Umgebungen.

Podman kann in verschiedenen Linux®-Distributionen ausgeführt werden, wie Red Hat Enterprise Linux, Fedora, CentOs und Ubuntu

Pods sind Container-Gruppen, die zusammen ausgeführt werden und Ressourcen teilen, ähnlich wie Kubernetes-Pods. Podman verwaltet diese Pods über eine einfache Befehlszeile (CLI) und die libpod-Library, in der APIs (Application Programming Interface) für das Management von Containern, Pods, Container Images und Volumes bereitgestellt werden. Über die Podman-CLI lassen sich Open Container Initiative-Container (OCI) erstellen, die gemäß den Branchenstandards für Container Runtimes und -Formate entwickelt wurden. Das verwandte Projekt Buildah verfügt über weitergehende Entwicklungsmöglichkeiten.

Die Pods bestehen aus einem Infrastruktur-Container und einer beliebigen Anzahl normaler Container. Die Aufgabe des Infrastruktur-Containers ist die Ausführung des Pods und die Verwaltung der User Namespaces, die für eine Isolation der Container vom Host sorgen. Die anderen Container verfügen jeweils über einen Monitor, der ihre Prozesse verfolgt und nach sogenannten „toten“ Containern sucht, d. h. nicht funktionierende Container, die nicht aus der Umgebung gelöscht werden können, weil ein Teil ihrer Ressourcen noch genutzt wird.

Podman unterscheidet sich von anderen Container-Engines dadurch, dass es ohne Daemon auskommt. Es ist also nicht auf einen Prozess mit Root- Berechtigungen angewiesen, um Container auszuführen.

Daemons sind Prozesse, die im Hintergrund Ihres Systems laufen und die Container-Ausführung erledigen, ohne dass eine Benutzeroberfläche erforderlich ist. Sie können sich Daemons als eine Vermittlungsinstanz zwischen dem Nutzenden und dem Container vorstellen.

Obwohl Daemons einerseits das Management Ihrer Container-Umgebung erleichtern, können Sie andererseits auch eine Ursache für Sicherheitsschwachstellen darstellen. Viele Daemons werden mit Root-Berechtigungen ausgeführt. In Linux-Systemen dient das Root-Account als Superuser mit administrativem Zugriff (wobei die Notwendigkeit für eine Admin-Verifizierung umgangen wird), um Dateien zu lesen, Programme zu installieren, Anwendungen zu bearbeiten usw. Dadurch werden Daemons zu einem idealen Ziel für Hacker, die die Kontrolle über Ihre Container übernehmen und das Host-System infiltrieren möchten.

Podman arbeitet ohne Daemon und ermöglicht normalen Nutzenden die Ausführung von Containern ohne Interaktion mit einem Daemon mit Root-Berechtigungen. Das Tool ermöglicht außerdem die Verwendung von Rootless-Containern. So können Nutzende Container erstellen, ausführen und verwalten, ohne dass Prozesse mit Admin-Berechtigungen erforderlich sind. Dadurch wird der Zugriff auf Ihre Container-Umgebung vereinfacht, und Sicherheitsrisiken werden minimiert. Darüber hinaus startet Podman die Container mit dem Label SELinux (Security-Enhanced Linux), mit dem Administratoren mehr Kontrolle darüber erhalten, welche Ressourcen und Funktionen für Container-Prozesse bereitgestellt werden.

Podman kann über die Befehlszeile aufgerufen werden, um Container aus einem Repository abzurufen und auszuführen. Podman ruft die konfigurierte Container Runtime auf, um den ausgeführten Container zu erstellen. Anstelle eines dedizierten Daemons verwendet Podman systemd, einen System- und Servicemanager für Linux-Betriebssysteme, um Updates auszuführen und die Container-Ausführung im Hintergrund sicherzustellen. Durch die Integration von systemd und Podman können Sie Kontroll-Units für Ihre Container erstellen und diese ausführen, wobei systemd automatisch aktiviert ist.

Nutzende können das automatische Ausführen und Verwalten ihrer Container über ihre eigenen Repositories auf dem System oder über systemd-Units steuern. Wird Nutzenden gestattet, ihre eigenen Ressourcen zu verwalten und Container ohne Root- Berechtigungen laufen zu lassen, kann dies der Versuchung entgegenwirken, Privilegien wie den Schreibzugriff auf Systembereiche auszuweiten, die nicht über diese Berechtigungen verfügen sollten. Außerdem wird so dafür gesorgt, dass alle Nutzenden über eigene Sets von Containern und Images verfügen und daher Podman gleichzeitig auf demselben Host nutzen können, ohne sich gegenseitig zu beeinträchtigen. Nach Abschluss der Arbeiten können Nutzende die Änderungen in eine gemeinsame Registry übertragen, was das Teilen von Images ermöglicht.

Podman stellt auch eine RESTful API (REST-API) für das Container-Management bereit. REST steht für „Representational State Transfer“. Eine REST-API ist eine API, die den Beschränkungen der REST-Architektur unterliegt und Interaktionen mit RESTful Webservices ermöglicht. Mit der REST-API können Sie Podman in Plattformen wie cURL, Postman, den Advanced REST Client von Google usw. aufrufen.

Podman Desktop ist eine GUI für Podman, die Entwicklungsteams einen zentralen Ort für die Arbeit mit Containern direkt auf ihrem Laptop oder Arbeitsplatzrechner bietet. Die Entwicklungsteams können Images erstellen, übertragen und abrufen und Podman-Ressourcen direkt über eine in lokalen Linux-, Windows- und macOS-Umgebungen konsistente GUI verwalten. Mit Podman Desktop lassen sich auch Container-Anwendungen für den Einsatz in Kubernetes-Umgebungen bereitstellen.

Podman Desktop unterstützt Erweiterungspakete, die zusätzliche Möglichkeiten eröffnen. Ein Beispiel, Podman AI Lab, fügt „Rezepte“ für die Erstellung von Anwendungen hinzu, die mit großen Sprachmodellen (LLMs) in einer lokalen Umgebung arbeiten, und enthält einen kuratierten Katalog von LLMs mit Open Source-Lizenzen. Ein weiteres Beispiel ist das Red Hat Extension Pack für Podman Desktop, das Entwicklungsteams bei der Arbeit mit spezifischen Red Hat-Technologien wie Red Hat OpenShift® unterstützt.

Podman ist eine modulare Container Engine. Daher sind zusätzliche Tools wie Buildah und Skopeo erforderlich, um die zugehörigen Container zu erstellen und zu verschieben. Mit Buildah können Sie Container entweder von Grund auf neu erstellen oder ein Image als Vorlage verwenden. Skopeo ermöglicht das Verschieben von Container Images zwischen verschiedenen Storage-Systemtypen. So können Sie Images zwischen Registries wie docker.io, quay.io und Ihrer internen Registry oder unterschiedlichen Storage-Typen in Ihrem lokalen System kopieren. Dieser modulare Containerisierungsansatz führt zu einer flexiblen, schlanken Umgebung, indem der Aufwand reduziert und die Funktionen isoliert werden, die Sie benötigen. Die Arbeit mit Containern ermöglicht den Einsatz kleinerer, modularer Tools, die sich auf einen einzigen Zweck konzentrieren und so oft wie nötig aktualisiert werden können.

Sie können sich Podman, Buildah und Skopeo wie eine Gruppe von speziellen Schweizer Taschenmessern vorstellen. In Kombination sind diese praktisch für beliebige Use Cases für Container geeignet. Podman ist das größte dieser Messer.

Podman und Buildah verwenden standardmäßig die OCI-Runtime runC, um Container zu starten. Mit runC können Sie ein Image erstellen und ausführen oder aber Docker-formatierte Images ausführen. Dieses auf der Programmiersprache Go basierende Tool liest eine Runtime-Spezifikation, konfiguriert den Linux-Kernel, und erstellt und startet die Container-Prozesse. Mit einigen Konfigurationsänderungen können Sie Podman auch mit anderen IT-Footprints wie crun verwenden.

Docker ist eine Containerisierungstechnologie, mit der Sie Linux-Container erstellen und verwenden können. Der Hauptunterschied zwischen Podman und Docker besteht darin, dass Podman eine Architektur ohne Daemon verwendet. In Podman wurden schon immer Rootless-Container verwendet, während die Daemon-Konfiguration von Docker erst kürzlich durch einen Rootless-Modus ergänzt wurde. Docker ist ein universelles Tool für die Erstellung und Verwaltung von Containern, während Podman und die zugehörigen Tools wie Buildah und Skopeo auf bestimmte Aspekte der Containerisierung spezialisiert sind. So passen Sie Ihre Umgebungen nur mit den Tools an, die Sie benötigen.

Podman ist eine leistungsstarke Alternative zu Docker. Allerdings können die beiden Tools auch zusammen verwendet werden. Um zwischen ihnen zu wechseln, können Sie einfach einen Alias von Docker auf Podman setzen (alias docker=podman) und umgekehrt. Darüber hinaus kann ein RPM namens „podman-docker“ einen „docker“-Befehl in den Systemanwendungspfad einfügen, mit dem Podman für diejenigen Umgebungen aufgerufen wird, bei denen der „docker“-Befehl erforderlich ist, um den Übergang von Docker zu erleichtern. Die Podman-CLI ähnelt der von Docker. So können Nutzende, die mit einem der beiden Tools vertraut sind, wahrscheinlich auch das jeweils andere Tools problemlos nutzen.

Manche Entwicklungsteams kombinieren Podman und Docker. Dabei verwenden sie Docker in der Entwicklungsphase und übertragen dann ihr Programm auf Podman in Runtime-Umgebungen.

Podman ist am besten für Entwicklungsteams geeignet, die Container ohne Kubernetes oder Red Hat OpenShift Container Platform ausführen. Für die Orchestrierung von Kubernetes-Containern können Entwicklungsteams die quelloffene, von der Community unterstützte Container-Engine CRI-O verwenden.

Podman hat die Container-Architektur verändert: Das Tool bietet die gleichen leistungsstarken Funktionen wie führende Container Engines, aber mit der Flexibilität, Zugänglichkeit und den Sicherheitsfunktionen, die viele Entwicklungsteams erwarten. Mit Podman können Sie:

  • Container Images sowie den kompletten Container Lifecycle verwalten, darunter Ausführung, Networking, Checkpointing und Entfernung von Containern.
  • Ressourcen für Rootless-Container und Pods ausführen und isolieren.
  • OCI- und Docker-Images sowie eine Docker-kompatible CLI unterstützen.
  • Umgebungen ohne Daemon erstellen und dadurch die Sicherheit erhöhen sowie nicht genutzte Ressourcen verringern. 
  • REST-APIs zur Unterstützung der erweiterten Funktionen von Podman bereitstellen.
  • Checkpoint-/Wiederherstellungsfunktionen für Linux-Container mit CRIU (Checkpoint/Restore in Userspace) implementieren. Mit CRIU können Sie einen ausgeführten Container einfrieren und seinen Speicherinhalt und -status auf einem Datenträger speichern, damit containerisierte Workloads schneller neu gestartet werden können.
  • Container automatisch aktualisieren. Podman erkennt, wenn ein aktualisierter Container nicht gestartet wird, und führt automatisch ein Rollback auf die letzte funktionierende Version aus. Dadurch wird die Zuverlässigkeit von Anwendungen erhöht. 

Podman ist in einer Subskription von Red Hat Enterprise Linux enthalten. So können Sie OCI-konforme Container ausführen, die mit einem bewährten, unterstützten und zuverlässigen UBI (Universal Base Image) erstellt wurden. Red Hat Enterprise Linux ist ein Standard für das Ausführen von Linux-Containern in Unternehmensumgebungen. Es ermöglicht Entwicklungsteams das einfache Einrichten von Containern, die Verwaltung des Deployments und die Beschleunigung der Entwicklung neuer Anwendungen. Mit einem Upgrade Ihrer Red Hat Enterprise Linux Infrastruktur stellen Sie sicher, dass Sie diese Vorteile voll ausschöpfen können. Mit portierbaren Anwendungen und Containern, die auf Red Hat Enterprise Linux in Open Hybrid Cloud-Umgebungen basieren, bleibt Ihr Unternehmen agil und kann sich mit Ihren Zielen weiterentwickeln.

Die Webkonsole von Red Hat Enterprise Linux vereinfacht Deployment und tägliche Verwaltung Ihrer Systeme mit einer benutzerfreundlichen Webschnittstelle. Podman ist als Komponente der Webkonsole verfügbar, um Ihnen die Verwaltung von Containern und Images zu erleichtern. Überwachen Sie die CPU- und Speicherauslastung Ihrer Container, indem Sie auf Container-Hosts zugreifen und die Systemauslastung im Dashboard der Webkonsole kontrollieren. Mit der Webkonsole können Sie sowohl allgemeine Aufgaben als auch komplexe Vorgänge vereinfachen und so die Verwaltung Ihrer Container optimieren.

Durch den Einsatz von Ansible Playbooks können Sie mit Red Hat Ansible® Automation Platform Podman-Funktionen automatisieren, beispielsweise Installation, Container Deployment und andere Aufgaben, die einen regelmäßigen Zeit- und Ressourcenaufwand erfordern.

Podman, Podman Desktop und andere auf offenen Standards basierende Container-Tools machen Red Hat Enterprise Linux zu einem leistungsstarken Container-Host, der produktionsreife Support-, Stabilitäts- und Sicherheitsfunktionen sowie einen Plan für die schrittweise Einführung von Kubernetes und Red Hat OpenShift bietet.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.