Podman (der POD MANager) ist ein Tool zum Verwalten von Containern und Bildern, in diesen Containern gemounteten Volumes und Pods, die aus Containergruppen erstellt werden. Podman führt Container unter Linux aus, kann aber auch auf Mac- und Windows-Systemen mithilfe einer von Podman verwalteten virtuellen Maschine verwendet werden. Podman basiert auf libpod, einer Bibliothek für das Container-Lifecycle-Management, die ebenfalls in diesem Repository enthalten ist. Die libpod-Bibliothek stellt APIs zum Verwalten von Containern, Pods, Container-Images und Volumes bereit.
Podman veröffentlicht viermal im Jahr in der zweiten Februar-, Mai-, August- und Novemberwoche eine neue Haupt- oder Nebenversion. Patch-Veröffentlichungen erfolgen häufiger und können jederzeit erfolgen, um den Benutzern Fehlerbehebungen bereitzustellen. Alle Veröffentlichungen sind PGP-signiert. Öffentliche Schlüssel der Teammitglieder, die zur Freigabe berechtigt sind, finden Sie hier.
Kontinuierliche Integration:
GoDoc:
Downloads
Auf hoher Ebene ist der Umfang von Podman und libpod wie folgt:
Unterstützung für mehrere Container-Image-Formate, einschließlich OCI- und Docker-Images.
Vollständige Verwaltung dieser Images, einschließlich Abrufen aus verschiedenen Quellen (einschließlich Vertrauen und Überprüfung), Erstellen (erstellt über Containerfile oder Dockerfile oder Commit aus einem Container) und Pushen an Registrierungen und andere Speicher-Backends.
Vollständige Verwaltung des Container-Lebenszyklus, einschließlich Erstellung (sowohl aus einem Image als auch aus einem explodierten Root-Dateisystem), Ausführung, Checkpointing und Wiederherstellung (über CRIU) und Entfernung.
Vollständige Verwaltung des Container-Netzwerks mit Netavark.
Unterstützung für Pods, Gruppen von Containern, die Ressourcen gemeinsam nutzen und gemeinsam verwaltet werden.
Unterstützung für die Ausführung von Containern und Pods ohne Root- oder andere erhöhte Rechte.
Ressourcenisolation von Containern und Pods.
Unterstützung für eine Docker-kompatible CLI-Schnittstelle, die Container sowohl lokal als auch auf Remote-Systemen ausführen kann.
Kein Manager-Daemon für verbesserte Sicherheit und geringere Ressourcenauslastung im Leerlauf.
Unterstützung für eine REST-API, die sowohl eine Docker-kompatible Schnittstelle als auch eine verbesserte Schnittstelle bietet, die erweiterte Podman-Funktionalität bereitstellt.
Unterstützung für die Ausführung unter Windows und Mac über virtuelle Maschinen, die von podman machine
ausgeführt werden.
Weitere Verbesserungen an podman machine
zur besseren Unterstützung von Podman Desktop und anderen Anwendungsfällen für Entwickler.
Unterstützung für conmon-rs, wodurch die Containerprotokollierung verbessert wird.
Unterstützung für die BuildKit-API.
Leistungs- und Stabilitätsverbesserungen.
Reduzierung der Größe der Podman-Binärdatei.
Wenn Sie glauben, ein Sicherheitsproblem im Projekt festgestellt zu haben, melden Sie das Problem bitte NICHT öffentlich über den GitHub-Issue-Tracker, die Mailingliste oder das IRC. Senden Sie stattdessen eine E-Mail mit möglichst vielen Details an [email protected]
. Dies ist eine private Mailingliste für die Hauptbetreuer.
Für allgemeine Fragen und Diskussionen nutzen Sie bitte die Kanäle von Podman.
Für Diskussionen zu Problemen/Bugs und Funktionen können Sie das GitHub-Problem- und PR-Tracking-System verwenden.
Es gibt auch eine Mailingliste lists.podman.io
. Sie können sich anmelden, indem Sie eine Nachricht mit dem Betreff subscribe
an [email protected]
senden.
Podman kann problemlos als normaler Benutzer ausgeführt werden, ohne dass eine Setuid-Binärdatei erforderlich ist. Wenn Podman-Container ohne Root ausgeführt werden, verwenden sie Benutzernamensräume, um Root im Container auf den Benutzer festzulegen, der Podman ausführt. Rootless Podman führt gesperrte Container ohne Privilegien aus, über die der Benutzer, der den Container ausführt, nicht verfügt. Einige dieser Einschränkungen können aufgehoben werden (zum Beispiel über --privileged
), aber Rootless-Container haben nie mehr Privilegien als der Benutzer, der sie gestartet hat. Wenn Sie Podman als Ihr Benutzer ausführen und vom Host aus in /etc/passwd
mounten, können Sie es trotzdem nicht ändern, da Ihr Benutzer keine Berechtigung dazu hat.
Fast alle normalen Podman-Funktionen sind verfügbar, es gibt jedoch einige Mängel. Jede aktuelle Podman-Version sollte ohne zusätzliche Konfiguration ohne Root ausgeführt werden können, obwohl Ihr Betriebssystem möglicherweise einige zusätzliche Konfigurationen erfordert, die im Installationshandbuch beschrieben werden.
Bevor rootless Podman verwendet werden kann, ist eine kleine Konfiguration durch einen Administrator erforderlich. Die erforderliche Einrichtung ist hier dokumentiert.
Podman Desktop bietet eine lokale Entwicklungsumgebung für Podman und Kubernetes auf Linux-, Windows- und Mac-Rechnern. Es handelt sich um ein Desktop-UI-Frontend mit vollem Funktionsumfang für Podman, das das podman machine
-Backend auf Nicht-Linux-Betriebssystemen zum Ausführen von Containern verwendet. Es unterstützt das vollständige Container-Lebenszyklusmanagement (Erstellen, Abrufen und Übertragen von Bildern, Erstellen und Verwalten von Containern, Erstellen und Verwalten von Pods und Arbeiten mit Kubernetes YAML). Das Projekt entwickelt sich auf GitHub und Beiträge sind willkommen.
Spezialisiertes Signieren und Übertragen von Bildern an verschiedene Speicher-Backends. Für diese Aufgaben wenden Sie sich an Skopeo.
Unterstützung für die Kubernetes CRI-Schnittstelle für die Containerverwaltung. Darauf ist der CRI-O-Daemon spezialisiert.
Podman nutzt OCI-Projekte und erstklassige Bibliotheken für verschiedene Aspekte:
Laufzeit: Wir verwenden die OCI-Laufzeittools, um OCI-Laufzeitkonfigurationen zu generieren, die mit jeder OCI-kompatiblen Laufzeit wie crun und runc verwendet werden können.
Bilder: Die Bildverwaltung nutzt die Container/Bildbibliothek.
Speicher: Der Container- und Bildspeicher wird von Containern/Speicher verwaltet.
Netzwerk: Netzwerkunterstützung durch Verwendung von Netavark und Aardvark. Rootless Networking wird über Pasta oder Slirp4netns abgewickelt.
Builds: Builds werden über Buildah unterstützt.
Conmon: Conmon ist ein Tool zur Überwachung von OCI-Laufzeiten, das sowohl von Podman als auch von CRI-O verwendet wird.
Seccomp: Eine einheitliche Seccomp-Richtlinie für Podman, Buildah und CRI-O.
Für Blogs, Veröffentlichungsankündigungen und mehr besuchen Sie bitte die Website podman.io!
Installationshinweise Informationen zur Installation von Podman in Ihrer Umgebung.
OCI-Hooks-Supportinformationen darüber, wie Podman OCI-Hooks für die Ausführung beim Starten eines Containers konfiguriert.
Podman-API- Dokumentation zur Podman-REST-API.
Podman-Befehle Eine Liste der Podman-Befehle mit Links zu ihren Manpages und in vielen Fällen Videos, die die verwendeten Befehle zeigen.
Podman-Container-Bilder Informationen zu den Podman-Container-Bildern auf quay.io.
Podman-Fehlerbehebungshandbuch Eine Liste häufiger Probleme und Lösungen für Podman.
Podman-Nutzungsübertragung Nützliche Informationen für die Betriebs- und Entwicklungsübertragung in Bezug auf die Infrastruktur, die Podman nutzt. Diese Seite enthält Tabellen mit Docker-Befehlen und ihren entsprechenden Podman-Befehlen.
Tutorials Tutorials zur Verwendung von Podman.
Remote-Client Eine kurze Anleitung zur Verwendung des Podman-Remote-Clients.
Grundlegende Einrichtung und Verwendung von Podman in einer Rootless-Umgebung. Ein Tutorial, das die Einrichtung und Konfiguration zeigt, die zum Ausführen von Rootless Podman erforderlich sind.
Versionshinweise Versionshinweise für aktuelle Podman-Versionen.
Mitwirkende Informationen zum Mitwirken an diesem Projekt.
Buildah und Podman sind zwei komplementäre Open-Source-Projekte, die auf den meisten Linux-Plattformen verfügbar sind. Beide Projekte befinden sich auf GitHub.com, Buildah hier und Podman hier. Sowohl Buildah als auch Podman sind Befehlszeilentools, die mit Bildern und Containern der Open Container Initiative (OCI) arbeiten. Die beiden Projekte unterscheiden sich in ihrer Spezialisierung.
Buildah ist auf die Erstellung von OCI-Images spezialisiert. Die Befehle von Buildah replizieren alle Befehle, die in einer Docker-Datei enthalten sind. Dies ermöglicht das Erstellen von Images mit und ohne Dockerfiles, ohne dass dafür Root-Rechte erforderlich sind. Das ultimative Ziel von Buildah besteht darin, eine Coreutils-Schnittstelle auf niedrigerer Ebene zum Erstellen von Images bereitzustellen. Die Flexibilität beim Erstellen von Images ohne Dockerfiles ermöglicht die Integration anderer Skriptsprachen in den Build-Prozess. Buildah folgt einem einfachen Fork-Exec-Modell und läuft nicht als Daemon, sondern basiert auf einer umfassenden API in Golang, die in andere Tools integriert werden kann.
Podman ist auf alle Befehle und Funktionen spezialisiert, die Ihnen bei der Pflege und Änderung von OCI-Images helfen, wie z. B. Pulling und Tagging. Außerdem können Sie die aus diesen Bildern erstellten Container erstellen, ausführen und verwalten. Zum Erstellen von Container-Images über Dockerfiles verwendet Podman die Golang-API von Buildah und kann unabhängig von Buildah installiert werden.
Ein wesentlicher Unterschied zwischen Podman und Buildah ist ihr Konzept eines Containers. Mit Podman können Benutzer „traditionelle Container“ erstellen, deren Zweck darin besteht, eine lange Lebensdauer zu gewährleisten. Während Buildah-Container eigentlich nur erstellt werden, um das Hinzufügen von Inhalten zum Container-Image wieder zu ermöglichen. Eine einfache Möglichkeit, sich das vorzustellen: Der buildah run
-Befehl emuliert den RUN-Befehl in einer Docker-Datei, während der podman run
-Befehl den docker run
Befehl in seiner Funktionalität emuliert. Aus diesem Grund und aufgrund der zugrunde liegenden Speicherunterschiede können Sie Podman-Container nicht in Buildah sehen oder umgekehrt.
Kurz gesagt, Buildah ist eine effiziente Möglichkeit, OCI-Images zu erstellen, während Podman Ihnen die Verwaltung und Pflege dieser Images und Container in einer Produktionsumgebung mit vertrauten Container-CLI-Befehlen ermöglicht. Weitere Einzelheiten finden Sie im Container-Tools-Handbuch.
$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob a6b3126f3807 done Copying config 25c667d086 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - / (O) (O) ~~~| -=(,Y,)=- | .---. /` |~~ ~/ o o ~~~~.----. ~~ | =(X)= |~ / (O (O) ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io