Zum Hauptinhalt springen

Erste Schritte mit Podman

Podman logoPodman logo

Erste Schritte mit Podman

Podman ist ein Dienstprogramm, das als Teil der libpod-Bibliothek bereitgestellt wird. Es kann verwendet werden, um Container zu erstellen und zu verwalten. Das folgende Tutorial zeigt Ihnen, wie Sie Podman einrichten und einige grundlegende Befehle ausführen.

Podman-Dokumentation

Die Dokumentation für Podman finden Sie hier.

Podman installieren

Für die Installation oder das Erstellen von Podman lesen Sie bitte die Installationsanweisungen.

Sich mit Podman vertraut machen

Die Codebeispiele sind dafür gedacht, als Nicht-Root-Benutzer ausgeführt zu werden und verwenden sudo, wo Root-Berechtigung erforderlich ist.

Hilfe erhalten

Um Hilfe zu erhalten und herauszufinden, wie Podman funktioniert, können Sie die Hilfe verwenden:

podman --help
podman <subcommand> --help

Für weitere Details können Sie die Handbuchseiten überprüfen:

man podman
man podman-<subcommand>

Bitte beziehen Sie sich auch auf den Podman-Fehlerbehebungsleitfaden, um bekannte Probleme und Tipps zur Lösung häufiger Konfigurationsfehler zu finden.

Images suchen, herunterladen und auflisten

Podman kann mit einigen einfachen Schlüsselwörtern nach Images in entfernten Registries suchen.

podman search <search_term>

Sie können Ihre Suche auch mit Filtern erweitern:

podman search httpd --filter=is-official

Das Herunterladen (Pullen) eines Images ist ebenfalls einfach.

podman pull docker.io/library/httpd

Nach dem Herunterladen einiger Images können Sie alle Images auflisten, die auf Ihrem Computer vorhanden sind.

podman images

Hinweis: Podman sucht in verschiedenen Registries. Daher wird empfohlen, den vollständigen Image-Namen (docker.io/library/httpd anstatt httpd) zu verwenden, um sicherzustellen, dass Sie das richtige Image verwenden.

Einen Container ausführen

Dieser Beispiel-Container führt einen sehr einfachen httpd-Server aus, der nur seine Index-Seite bereitstellt.

podman run -dt -p 8080:80/tcp docker.io/library/httpd

Hinweis: Da der Container im abgetrennten Modus ausgeführt wird, dargestellt durch das -d im podman run Befehl, gibt Podman die Container-ID aus, nachdem der Befehl ausgeführt wurde. Das -t fügt auch ein Pseudo-TTY hinzu, um beliebige Befehle in einer interaktiven Shell auszuführen.

Hinweis: Wir verwenden Port-Weiterleitung, um auf den HTTP-Server zugreifen zu können. Für eine erfolgreiche Ausführung wird mindestens slirp4netns v0.3.0 benötigt.

Laufende Container auflisten

Der podman ps Befehl wird verwendet, um erstellte und laufende Container aufzulisten.

podman ps

Hinweis: Wenn Sie -a zum podman ps Befehl hinzufügen, zeigt Podman alle Container an (erstellt, beendet, laufend, etc.).

Den httpd-Container testen

Wie Sie sehen können, hat der Container keine IP-Adresse zugewiesen bekommen. Der Container ist über seinen veröffentlichten Port auf Ihrem lokalen Computer erreichbar.

curl http://localhost:8080

Von einem anderen Computer aus müssen Sie die IP-Adresse des Hosts verwenden, der den Container ausführt.

curl http://<IP_Address>:8080

Hinweis: Anstatt curl zu verwenden, können Sie auch einen Browser auf http://localhost:8080 richten.

Einen laufenden Container inspizieren

Sie können einen laufenden Container auf Metadaten und Details über sich selbst "inspizieren". podman inspect liefert viele nützliche Informationen wie Umgebungsvariablen, Netzwerkeinstellungen oder zugewiesene Ressourcen.

Da der Container im rootless Modus läuft, wird dem Container keine IP-Adresse zugewiesen.

podman inspect -l | grep IPAddress
"IPAddress": "",

Hinweis: Das -l ist ein praktisches Argument für latest container. Sie können auch die ID oder den Namen des Containers anstelle von -l oder dem langen Argument --latest verwenden.

Hinweis: Wenn Sie den Remote-Podman-Client verwenden, einschließlich Mac- und Windows- Computern (ausgenommen WSL2), ist die -l Option nicht verfügbar.

Container-Logs anzeigen

Sie können auch die Logs des Containers mit Podman anzeigen:

podman logs -l

127.0.0.1 - - [04/May/2020:08:33:48 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:50 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45

Container-PIDs anzeigen

Sie können die httpd-PID im Container mit podman top beobachten.

podman top -l

USER PID PPID %CPU ELAPSED TTY TIME COMMAND
root 1 0 0.000 22m13.33281018s pts/0 0s httpd -DFOREGROUND
daemon 3 1 0.000 22m13.333132179s pts/0 0s httpd -DFOREGROUND
daemon 4 1 0.000 22m13.333276305s pts/0 0s httpd -DFOREGROUND
daemon 5 1 0.000 22m13.333818476s pts/0 0s httpd -DFOREGROUND

Container stoppen

Sie können den Container stoppen:

podman stop -l

Sie können den Status von einem oder mehreren Containern mit dem podman ps Befehl überprüfen. In diesem Fall sollten Sie das -a Argument verwenden, um alle Container aufzulisten.

podman ps -a

Container entfernen

Schließlich können Sie den Container entfernen:

podman rm -l

Sie können die Löschung des Containers überprüfen, indem Sie podman ps -a ausführen.

Netzwerk

Für eine detailliertere Anleitung über Netzwerk und DNS in Containern, siehe bitte den Netzwerk-Leitfaden.

Checkpoint, Migration und Wiederherstellung von Containern

Das Erstellen eines Checkpoints eines Containers stoppt den Container und schreibt den Zustand aller Prozesse im Container auf die Festplatte. Damit kann ein Container später migriert und wiederhergestellt werden, wobei er genau zum selben Zeitpunkt weiterläuft wie beim Checkpoint. Weitere Details finden Sie in den Checkpoint-Anweisungen.

Integrationstests

Für weitere Informationen zum Einrichten und Ausführen der Integrationstests in Ihrer Umgebung, schauen Sie sich die Integrationstests README.md an.

Podman Python-Dokumentation

Die Dokumentation für das Podman Python SDK befindet sich hier.

Weitere Informationen

Für weitere Informationen über Podman und seine Unterbefehle, schauen Sie sich die ASCII-Art-Demos auf der README.md Seite an.