Zu Abschnitt

Was ist Podman?

URL kopieren

2024 Global Tech Trends

Die schnelle Digitalisierung in der Technologiewelt hat dazu geführt, dass Organisationen teilweise andere Hauptbereiche ihres Unternehmens priorisieren. In der 10. Ausgabe unseres Berichts „Global Tech Trends 2024“ untersuchen wir Insights aus der Branche, Prioritäten und kritische Hindernisse.

Report lesen: Global Tech Trends 2024

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

Aufgrund seiner inklusiven Architektur ohne Daemon bietet Podman mehr Sicherheit und Zugriffsmöglichkeiten für das Container-Management. Mit den ergänzenden Tools und Funktionen wie Buildah und Skopeo können Entwicklungsteams ihre Container-Umgebungen an ihre Anforderungen anpassen. 

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 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. Allerdings stehen im ergänzenden Projekt Buildah modernere Entwicklungsfunktionen zur Verfügung. Podman kann in verschiedenen Linux-Distributionen ausgeführt werden, wie Red Hat Enterprise Linux, Fedora, CentOs und Ubuntu

Jeder Pod besteht aus einem Infrastruktur-Container und einer beliebigen Anzahl von normalen Containern. 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, weil das Tool ohne Daemon ausgeführt werden kann. Daemons sind Prozesse, die im Hintergrund Ihres Systems laufen und den Großteil der 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 auch 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 Nutzerinnen und Nutzer 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 jeden Container mit einem SELinux-Label (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, ein 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.

Nutzerinnen und Nutzer können eigene Repositories im System sowie systemd-Units verwalten, um das automatische Starten sowie das Management ihrer eigenen Container zu kontrollieren. Durch eigenes Ressourcenmanagement und Ausführung von Containern ohne Root-Berechtigungen werden schlechte Praktiken (beispielsweise das Verzeichnis /var/lib/containers allgemein beschreibbar zu machen) oder andere Systemmanagementpraktiken vermieden, durch die zusätzliche Sicherheitsprobleme für Anwendungen entstehen können. 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. Wenn die Arbeit abgeschlossen ist, können Änderungen in eine gemeinsame Registry übertragen werden, damit Images geteilt werden können.

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 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 zum Erreichen Ihrer Ziele benötigen. Außerdem lassen sich kleine, modulare Tools schneller weiterentwickeln, und jedes Tool kann zu einem bestimmten Zweck eingesetzt werden. 

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

Podman und Buildah verwenden standardmäßig runC, die OCI-Runtime, um Container zu starten. Sie können ein Image erstellen und ausführen oder aber Docker-formatierte Images mit runC 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 Container-Erstellung und -Verwaltung, während Podman und die zugehörigen Tools wie Buildah und Skopeo auf bestimmte Aspekte der Containerisierung spezialisiert sind, um eine Anpassung an Ihre Anforderungen in Bezug auf cloudnative Anwendungen zu ermöglichen. 

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 der PATH-Variablen der Systemanwendung 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 ist der Docker Container Engine ähnlich. Daher können Nutzende, die mit einem der beiden Tools vertraut sind, wahrscheinlich auch das jeweils andere Tools problemlos nutzen. 

Manche Entwicklungsteams setzen Podman und Docker zusammen ein. Dabei verwenden sie Docker in der Entwicklungsphase und übertragen dann ihr Programm auf Podman in Runtime-Umgebungen, um von den besseren Sicherheitsfunktionen zu profitieren. 

Podman ist am besten für Entwicklungsteams geeignet, die Container ohne Kubernetes oder OpenShift Container Platform ausführen. CRI-O ist eine quelloffene, communitybasierte Container Engine für die Kubernetes-Container-Orchestrierung, wie Red Hat OpenShift® Container Platform.

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 erweiterten Sicherheit, die viele Entwicklungsteams heutzutage erwarten. Mit Podman können Sie:

  • Container Images sowie den kompletten Container Lifecycle verwalten, darunter Ausführung, Networking, Checkpointing und Entfernung.
  • 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 die Ausführung von Linux-Containern in Unternehmensumgebungen, mit dem Entwicklungsteams Container einfach hochfahren, das Deployment verwalten und die Entwicklung neuer Anwendungen beschleunigen können. Die portierbaren Anwendungen und Container basieren auf Red Hat Enterprise Linux in der Open Hybrid Cloud und bieten Ihnen die nötige Agilität, um Ihre Transformationsziele zu erreichen.

Die Webkonsole von Red Hat Enterprise Linux vereinfacht die Bereitstellung und tägliche Verwaltung Ihrer Systeme mit einer benutzerfreundlichen Web-Schnittstelle. 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 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.