- Themen
- Open Source
- Was ist Podman?
Aktualisiert 11. Juni 2024•7 Minuten (Lesedauer)
Überblick
Podman (kurz für POD-Manager) ist ein OpenSource-Tool, mit dem Sie Container entwickeln, managen und ausführen können. Das Tool wurde von RedHat® Engineers in Zusammenarbeit mit der OpenSource 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 RedHat Enterprise Linux, Fedora, CentOs und Ubuntu.
Was sind Pods?
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.
Red Hat Ressourcen
Wie unterscheidet sich Podman von anderen Container Engines?
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 LabelSELinux (Security-Enhanced Linux), mit dem Administratoren mehr Kontrolle darüber erhalten, welche Ressourcen und Funktionen für Container-Prozesse bereitgestellt werden.
Wie werden Container mit Podman gemanagt?
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.
Was ist Podman Desktop?
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 OpenSource-Lizenzen. Ein weiteres Beispiel ist das RedHat Extension Pack für Podman Desktop, das Entwicklungsteams bei der Arbeit mit spezifischen RedHat-Technologien wie RedHat OpenShift® unterstützt.
Podman, Buildah und Skopeo
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.
Podman im Vergleich zu Docker
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 RedHat 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.
Warum Podman?
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.
Wie RedHat helfen kann
Podman ist in einer Subskription von RedHat 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. RedHat 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 RedHat Enterprise Linux Infrastruktur stellen Sie sicher, dass Sie diese Vorteile voll ausschöpfen können. Mit portierbaren Anwendungen und Containern, die auf RedHat Enterprise Linux in OpenHybridCloud-Umgebungen basieren, bleibt Ihr Unternehmen agil und kann sich mit Ihren Zielen weiterentwickeln.
Die Webkonsole von RedHat 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 RedHat 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 RedHat 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 RedHat OpenShift bietet.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.
RedHat Testversionen
Unsere kostenlosen Testversionen unterstützen Sie dabei, praktische Erfahrungen zu sammeln, sich auf eine Zertifizierung vorzubereiten oder zu bewerten, ob ein Produkt die richtige Wahl für Ihr Unternehmen ist.
Weiterlesen
Weiterlesen
Ansible im Vergleich zu Chef: Was Sie wissen müssen
Automatisierungstools: Chef vs. Ansible. Passt Ansible oder Chef besser zu Ihren IT-Anforderungen? Ähnlichkeiten und Unterschiede von Ansible und Chef im Detail
Automatisierungstools: Ansible, Terraform, Puppet, Chef, Salt
Red Hat Ansible Automation Platform und andere Tools unterstützen Unternehmen bei der Automatisierung von IT-Prozessen. Funktionen und Unterschiede erklärt
Vergleich von Linux-Distributionen – Welche ist die beste?
Eine Linux Distro ist ein installierbares Betriebssystem, das auf Linux-Kernel basiert und Benutzerprogramme und Repositories unterstützt. Vorteile von RHEL
Ressourcen zu Open Source
Zugehörige Inhalte
-
Blogbeitrag
Meine Channel-Wunschliste für 2025
-
Kurzdarstellung
Integrieren und Vereinfachen der KI für die Produktion mit Intel und RedHat
-
Blogbeitrag
Das Cloud Computing ist erwachsen geworden
-
Case Study
Galliker migriert .NET-Anwendungen zu RedHat OpenShift
Verwandte Artikel
- Ansible im Vergleich zu Chef: Was Sie wissen müssen
- Automatisierungstools: Ansible, Terraform, Puppet, Chef, Salt
- Was ist KubeVirt?
- Vergleich von Linux-Distributionen – Welche ist die beste?
- Gehostete Control Planes für Red Hat OpenShift | Vorteile
- Was sind Sandbox-Container? | Sandboxing von Containern
- RedHat OpenShift für Entwicklungsteams und Developer
- Red Hat OpenShift oder Kubernetes: Was ist der Unterschied?
- Was ist Podman Desktop?
- Ansible oder Salt: Automatisierungstools im Vergleich
- IT-Automatisierung für Unternehmen mit Ansible und Puppet
- Ansible im Vergleich zu RedHat Ansible Automation Platform
- Was ist Kubeflow? MLOps mit Kubeflow
- CentOS Linux 7: Was sind die Alternativen nach End-of-Life?
- Was ist Skopeo? Open Source-Tool für Container-Management
- Was ist der Kubernetes Java-Client?
- Kubernetes auf AWS | Selbst gemanagte Kubernetes oder gemanagte Plattform?
- Ansible vs Terraform | Automatisierungs-Tools im Vergleich
- Was ist InstructLab?
- Was ist Helm? Helm Charts: Funktionen und Anwendungen
- Was ist MicroShift? Schlankes Red Hat OpenShift für das Edge
- Was sind Red Hat OpenShift Operatoren? | Konzept und Einsatz
- RedHat OpenShift und OKD - Was ist der Unterschied?
- Was ist Kubernetes (K8s)? Vorteile und Einsatz von Kubernetes
- Was ist CentOS Stream? Details, Migration und Möglichkeiten
- Was ist CentOS?
- Edge Computing mit RedHat OpenShift
- Was ist Kogito?
- Was ist Kubernetes-Sicherheit (Kubernetes Security)?
- Kubernetes und Container für KI/ML-Workloads | Red Hat
- Was ist eine Container Registry?
- Was ist Quarkus? Vorteile und Einsatz erklärt
- Was ist Containerisierung?
- Was ist Open Source? Definition, Funktionsweise und Vorteile
- OpenJDK im Vergleich zu Oracle JDK
- Was ist Cloud Foundry? Details, Vor- und Nachteile und Alternativen
- Was sind Microservices? Architektur im Überblick
- OpenShift im Vergleich zu OpenStack: Welche Unterschiede gibt es?
- Was ist Container-Sicherheit?
- Was ist Buildah?
- Was ist ein Linux-Container?
- Kubernetes im Vergleich zu OpenStack
- Was ist Linux? Linux Funktionen, Kernel und Befehlszeile im Detail
- Was ist Docker? Welche Vorteile bieten Container?
- Spring auf Kubernetes mit RedHat OpenShift
- Warum ApacheKafka auf Kubernetes?
- Apache Kafka-Software
- Was ist Hochverfügbarkeit und Disaster Recovery für Container?
- Was ist ein Golden Image?
- Was sind RedHat OpenShift Cloud-Services?
- Verwendung von Helm mit RedHat OpenShift
- Best Practices für Kubernetes-Sicherheit
- Was ist Grafana? Datenvisualisierung im Überblick
- Orchestrierung von Windows-Containern in RedHat OpenShift
- Was ist KVM?
- Open Source-Software erklärt
- Was ist Container-Orchestrierung? Prozesse und Tools erklärt
- OpenSource- im Vergleich zu proprietärer Software in Fahrzeugen
- Wie funktioniert RedHat Ansible Automation Platform mit RedHat OpenShift?
- High-Performance Computing (HPC) mit RedHat OpenShift
- Vorteile Kubernetes-nativer Sicherheit
- Was ist KubeLinter?
- Einführung in Kubernetes-Sicherheit
- Überlegungen zur Compliance bei Containern und Kubernetes
- Microservices: IT-Integration im Gesundheitswesen
- Kubernetes-Cluster-Management
- RedHat OpenShift auf IT-Infrastruktur von IBM
- RedHat OpenShift für Führungskräfte
- Kostenmanagement für Kubernetes
- Deployment von RedHat OpenShift
- RedHat OpenShift in VMware
- Was ist rkt?
- Was ist Kubernetes für Unternehmen?
- Warum ist RedHat OpenShift die richtige Wahl für IT-Operationen?
- Was macht RedHat OpenShift zur richtigen Wahl für SAP?
- Kubernetes-native Java-Entwicklung mit Quarkus
- Was ist Kubernetes Role-based Access Control (RBAC)
- Was ist der Unterschied zwischen VNF und CNF?
- Was waren CoreOS und CoreOS Container Linux?
- Kubernetes-Tutorial
- Was ist SOA (Service-Oriented Architecture)?
- Die Kubernetes-API erklärt
- Kubernetes-Cluster-Management erklärt
- Was ist ein Kubernetes Operator?
- Was ist eine Kubernetes-Bereitstellung?
- Was spricht für den RedHat Build von Quarkus?
- Zustandsbehaftet oder zustandslos
- Einführung in die Kubernetes-Architektur
- Was ist CaaS (Container as a Service)?
- Einführung in Kubernetes Patterns
- Kubernetes-Cluster erklärt
- Container vs VM
- Was ist Jaeger?
- Was ist etcd?
- Was ist container-native Virtualisierung?
- Red Hat OpenShift Serverless: Features und Vorteile
- Was ist Clair?
- Was ist Istio?
- Was ist Knative?
- Warum RedHat für Microservices?
- Warum RedHat für Container?
- Was ist ein Kubernetes-Pod?