Anleitung für Anfänger zur Installation und Verwendung von Podman unter AlmaLinux 9

Podman ist ein Linux-natives Tool für die Bereitstellung von Anwendungen mit Open Container Initiative (OCI) Containern und Container-Images. Es unterstützt mehrere Container-Image-Formate, darunter Docker-Images und OCI-Container-Images. Außerdem unterstützt Podman die Verwaltung von Pods und Containergruppen.

Podman ist ein daemonloses Tool, das ohne Dienst in einer einzigen binären Befehlszeile läuft. Es bietet eine ähnliche Befehlszeile wie Docker, du kannst einen Alias wie „alias docker=podman“ verwenden.

In dieser Anleitung zeigen wir dir, wie du Podman als Ersatz für die Docker Engine auf einem AlmaLinux 9 Server installierst und nutzt. Du lernst, wie du Podman für die Verwaltung von Containeranwendungen einsetzen kannst. Am Ende dieses Leitfadens wirst du besser verstehen, wie du Podman als Container-Orchestrierung für deine lokale Entwicklung nutzen kannst.

Voraussetzungen

Um mit dieser Anleitung zu beginnen, musst du Folgendes haben

  • Einen AlmaLinux 9 Server – In diesem Beispiel wird ein Server mit dem Hostnamen„AlmaLinux9“ verwendet.
  • Einen Nicht-Root-Benutzer mit sudo/root-Administrator-Rechten.

Podman installieren

Podman ist eine daemonlose und quelloffene Container-Orchestrierung für die schnelle Entwicklung. Podman ist eine native Linux-Anwendung und bietet eine Befehlszeilenschnittstelle ähnlich wie Docker.

Mit Podman kannst du Anwendungen mithilfe von OCI-Containern (Open Containers Initiative) und Container-Images finden, ausführen, freigeben und bereitstellen.

Unter AlmaLinux ist Podman standardmäßig im AppStream-Repository verfügbar. Du kannst es mit dem DNF-Paketmanager installieren.

Führe den folgenden dnf-Befehl aus, um Podman auf deinem AlmaLinux-Server zu installieren.

sudo dnf install podman

Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER.

podman installieren

Da Podman kein Daemon ist, kannst du ihn einfach ausführen, ohne einen Daemon zu starten.

Führe den folgenden Befehl aus, um die Podman-Version und detaillierte Informationen über deine Installation zu überprüfen.

podman version

Unten siehst du eine Ausgabe der aktuellen Podman-Version während dieses Schreibens:

Podman-Version prüfen

Außerdem kannst du die Details der Podman-Installation mit dem folgenden Befehl überprüfen.

podman info

Podman als Nicht-Root-Benutzer ausführen

In diesem Abschnitt wirst du Podman für einen Nicht-Root-Benutzer einrichten. Du erstellst einen neuen Benutzer und stellst sicher, dass der neue Nicht-Root-Benutzer Container mit Podman ausführen kann.

Führe den folgenden Befehl aus, um einen neuen Benutzer mit dem Namen„alice“ anzulegen und das Passwort für ihn zu konfigurieren. Gib ein neues Passwort ein, wenn du dazu aufgefordert wirst, und wiederhole den Vorgang.

sudo useradd -m -s /bin/bash alice
sudo passwd alice

Füge nun den neuen Benutzer„alice“ zur Gruppe„wheel“ hinzu. Dadurch kann der neue Benutzer„sudo“ ausführen und root werden.

sudo usermod -aG wheel alice

Danach führst du den folgenden Befehl aus, um die Verweildauer für den Benutzer „alice“ zu aktivieren. Dadurch kann der Benutzer „alice“ den Containerprozess über einen längeren Zeitraum laufen lassen, auch wenn er abgemeldet ist.

sudo loginctl enable-linger alice

Melde dich als neuer Benutzer„alice“ mit dem unten stehenden Befehl an.

su - alice

Neuen Benutzer anlegen

Führe den Befehl„podman“ aus, um einen neuen Container mit dem Bild„hello-world“ zu starten.

podman run hello-world

Wenn du erfolgreich warst, solltest du eine Ausgabe wie diese erhalten:

Laufcontainer hello-world

Führe abschließend den folgenden „podman“-Befehl aus, um die Liste der laufenden und beendeten Container zu überprüfen.

podman ps -a

Wenn die Konfiguration erfolgreich war, solltest du den Container mit dem Basisimage„hello-world“ mit dem Status„Exited“ sehen.

die Liste der Container überprüfen

Finden von Container-Abbildern

Standardmäßig ruft Podman Container-Images von mehreren Image-Registries ab, z. B. von Redhat Image Registry, quay.io und DockerHub. Du kannst weitere Container-Image-Registries in der Konfiguration „/etc/containers/registries.conf“ hinzufügen.

In diesem Beispiel wird DockerHub als Container-Registry verwendet, also fangen wir an.

Führe den folgenden Befehl aus, um neue Container-Images zu finden, die„httpd“ enthalten.

podman search httpd

Nachfolgend siehst du eine Ausgabe, die du auf deinem Terminal erhalten solltest:

Suchcontainer

Du kannst die Ausgabe auch einschränken, indem du die Option„–limit“ wie folgt verwendest.

podman search httpd --limit 3

Dann werden nur die ersten drei Container-Images aus jeder Container-Image-Registry angezeigt.

Bilder finden Top 3

Und schließlich kannst du auch die Option„–filter“ verwenden.

podman search httpd --filter=is-official

Damit werden nur offizielle Container-Images angezeigt.

Filterausgang

Herunterladen von Images

Nachdem du die Container-Images gefunden hast, musst du sie aus den Registern herunterladen.

Führe den folgenden Befehl aus, um das Image„httpd“ mit dem Tag„alpine“ herunterzuladen.

podman pull httpd:alpine

Wähle die Image-Registry aus, die du verwenden möchtest. In diesem Beispiel wird DockerHub verwendet.

Auswahl der Containerregistrierung

Nachdem du die Quelle ausgewählt hast, beginnt der Downloadprozess.

Bilder ziehen

Sobald er abgeschlossen ist, führe den folgenden Befehl aus, um die verfügbaren Images auf deinem AlmaLinux Server zu überprüfen.

podman images

Wenn der Vorgang erfolgreich war, solltest du zwei Container-Images erhalten: das Image„hello-world“ von quay.io und„httpd“ von DockerHub.

Bilder der Checkliste

Inspektion von Images

Die Inspektion von Images ist eine gute Möglichkeit, um detaillierte Informationen darüber zu erhalten, wie der Container starten wird. Bei Podman und Docker kannst du Images mit der Option „inspect“ inspizieren.

Führe den folgenden Befehl aus, um detaillierte Informationen über das Image„httpd:alpine“ zu erhalten.

podman inspect docker.io/library/httpd:alpine

Dadurch erhältst du detaillierte Informationen über die Images, z. B. das Erstellungsdatum, die Größe, das Standardarbeitsverzeichnis, den Startbefehl, den offenen Port und vieles mehr.

detailliertes Bild

Du kannst auch angeben, welchen Teil du überprüfen möchtest, indem du den zusätzlichen Parameter wie folgt angibst.

podman inspect --format "size: {{.Size}}" docker.io/library/httpd:alpine
podman inspect --format "ports: {{.Config.ExposedPorts}}" docker.io/library/httpd:alpine
podman inspect --format "workdir: {{.Config.WorkingDir}}" docker.io/library/httpd:alpine

Dies zeigt dir die Größe des Images, den standardmäßig verwendeten Port und das standardmäßige Arbeitsverzeichnis an.

Bild inspizieren

Container starten

In diesem Abschnitt erfährst du, wie du den Container mit Podman starten kannst.

Gib den folgenden Befehl ein, um einen neuen Container namens „httpd“ zu starten, den Port 8080 auf dem Host-Rechner freizugeben und das Image„httpd:alpine“ zu verwenden. Der Parameter„–rm“ entfernt den Container automatisch, wenn er gestoppt wird.

podman run -it --rm -d -p 8080:80 --name httpd docker.io/library/httpd:alpine

Wenn du erfolgreich bist, solltest du eine zufällige Zeichenkette und eine Nummer für die neue Container-ID erhalten.

Überprüfe den laufenden Container mit dem folgenden Befehl. Du solltest den Container„httpd“ mit dem Status„Up“ erhalten und den Port 8080 auf dem Host-Rechner verwenden.

podman ps

laufender Container

Als nächstes kannst du den Container „httpd“ mit dem folgenden curl-Befehl überprüfen. Achte darauf, dass du die IP-Adresse im folgenden Beispiel durch die IP-Adresse deines Servers ersetzt.

curl http://192.168.5.20:8080/

Wenn du erfolgreich bist, solltest du eine Ausgabe wie diese erhalten:

Zugangsbehälter

Außerdem kannst du auch über den Webbrowser auf den „httpd“-Container zugreifen. Öffne deinen Webbrowser und rufe die IP-Adresse des Servers auf, gefolgt von dem Container-Port 8080 (d.h.: http://192.168.5.20:8080/).

Wenn du erfolgreich warst, solltest du die Standardseite index.html aus dem Container„httpd“ wie folgt erhalten:

Zugriff auf den Container

Überprüfen des Containers Logs

Wenn der Container „httpd“ in Betrieb ist, kannst du die Logs des Containers überprüfen. Diese Informationen sind nützlich, um deine Anwendungen zu debuggen.

Um alle Logs des Containers„httpd“ anzuzeigen, führe den folgenden Befehl aus.

podman logs httpd

Dies ist ein Beispiel für die Logs des Containers „httpd“.

Baumstämme prüfen Container

Als Nächstes kannst du die Log-Ausgabe mit dem Parameter„–tail“ wie folgt reduzieren.

podman logs --tail 20 httpd

In diesem Beispiel zeigt dir der Parameter „tail 20“ die letzten 20 Zeilen der Logs vom Container„httpd„.

Anhalten des Containers

Wenn du den Container stoppen willst, führst du einfach den Befehl `podmanstop` aus.

Führe den folgenden Befehl aus, um den Container„httpd“ zu stoppen.

podman stop httpd

Sobald der Container„httpd“ gestoppt ist, führe den folgenden Befehl aus, um die Liste der verfügbaren Container auf deinem System zu überprüfen.

podman ps
podman ps -a

Der Container„httpd“ wird automatisch gelöscht, nachdem der Container gestoppt wurde. Das liegt daran, dass du den Container mit dem Parameter„–rm“ ausführst.

Abstellcontainer

Container mit benutzerdefiniertem Volumen starten

In diesem Beispiel wirst du einen neuen Container mit benutzerdefiniertem Volume starten. Dadurch wird das lokale Verzeichnis auf dem Host-Rechner in den Container gemountet.

Erstelle ein neues Verzeichnis„data“ im Home-Verzeichnis des Benutzers alice. Erstelle dann mit dem nano-Editor eine neue Datei„index.html “ innerhalb des Verzeichnisses„data„.

mkdir -p ~/data/
nano ~/data/index.html

Füge das folgende HTML-Skript ein.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Welcome to Container Nginx</title>
</head>
<body>
  <h2>Hello from httpd container - Managed with Podman</h2>
</body>
</html>

Speichere und schließe die Datei.

Führe nun den folgenden Befehl aus, um einen neuen Container „httpd“ mit dem benutzerdefinierten Volume des Verzeichnisses„data“ zu starten, das in das Verzeichnis„/usr/local/apache2/htdocs“ des Containers eingehängt wird.

podman run --privileged=true -it --rm -d -p 8080:80 --name httpd -v ~/data:/usr/local/apache2/htdocs docker.io/library/httpd:alpine

Außerdem wird dieser Container mit einem zusätzlichen Parameter„–privileged=true“ ausgeführt. Dies dient zum Testen und trotzdem wird der Container als Benutzer‚alice‚ und nicht als Root-Benutzer ausgeführt. Weitere Informationen zu privilegierten Flags findest du auf Podman.

Als nächstes führst du den folgenden Befehl aus, um den laufenden Container auf deinem System zu überprüfen.

podman ps

Wenn er erfolgreich war, solltest du den neuen Container„httpd“ mit dem Status„Up“ und dem offenen Port 8080 auf dem Host-Rechner sehen.

run container custom volumes

Führe den folgenden curl-Befehl aus, um den neuen Container„httpd“ zu überprüfen.

curl http://192.168.5.21:8080/

Du solltest eine Ausgabe des index.html-Skripts erhalten, das du zuvor erstellt hast.

Zugriff auf den Container

Im Webbrowser auf http://192.168.5.21:8080/ sollte dir die benutzerdefinierte Seite wie folgt angezeigt werden:

Zugangsbehälter

Anmeldung im Container

Wenn der Container„httpd“ läuft, kannst du mit dem Befehl„podman exec“ über die Shell auf den Container zugreifen.

Melde dich mit folgendem Befehl am Container„httpd“ an. Dadurch wird die Shell„/bin/sh“ auf dem Container„httpd“ ausgeführt und an deine aktuelle Sitzung angehängt.

podman exec -it httpd /bin/sh

Sobald du eingeloggt bist, solltest du dich in dem Verzeichnis„WorkingDir“ befinden. In diesem Beispiel ist das Standard-WorkingDir das Verzeichnis„/usr/local/apache2„.

Führe nun den folgenden Befehl im Container„httpd“ aus. Überprüfe den aktuellen Benutzer, die lokale IP-Adresse des Containers und das Standard-Gateway des Containers.

id

ip a
route -n

Möglicherweise erhältst du eine Ausgabe mit einer anderen IP-Adresse und einem anderen Gateway, die aber ähnlich aussehen sollte wie diese:

Zugriff auf den Container

Pod ausführen und verwalten

In Podman kannst du Pods erstellen und ausführen. Der Pod ist ein Wrapper für Container, was bedeutet, dass mehrere Container auf einem einzigen Pod laufen können. Wie in Kubernetes ist der Pod die kleinste Einheit, in der deine Anwendung läuft.

Mit Podman kannst du Pods erstellen und ausführen, auch ohne Kubernetes.

Führe den folgenden Befehl aus, um einen neuen Pod httpdTest mit dem Image„httpd:alpine“ zu erstellen und Port 9090 auf dem Host-Rechner freizugeben.

podman run -dt --pod new:httpdTest -p 9090:80 docker.io/library/httpd:alpine

Wenn du erfolgreich bist, solltest du eine zufällige Zeichenkette und die Nummer der Pod-ID erhalten.

Führe nun den folgenden Befehl aus, um den laufenden Pod auf deinem System zu überprüfen.

podman pod ls

Du solltest den Pod„httpdTest“ mit dem Status„Running“ und 2 Containern sehen.

Pod erstellen

Du kannst nun die Option„inspect“ für den Pod verwenden.

podman pod inspect httpdTest

Du solltest detaillierte Informationen über den Pod httpdTest erhalten.

podman inspizieren pod

Du kannst auch die Anzahl der Container, die in den Pods laufen, sowie die Namen der Container mit dem folgenden Befehl überprüfen.

podman pod inspect --format="containers: {{.NumContainers}}" httpdTest
podman pod inspect --format "{{.Containers}}" httpdTest

Du erhältst eine Ausgabe wie diese:

Inspektionskapsel

Zuletzt führst du den folgenden Befehl aus, um auf den Pod httpdTest zuzugreifen, der auf dem Host-Rechner an Port 9090 läuft. Wenn du erfolgreich bist, solltest du die Standardcontainer der index.html-Seite erhalten, die auf dem Pod httpdTest laufen.

curl http://192.168.5.21:9090/

Fazit

Herzlichen Glückwunsch! Du hast nun Podman auf AlmaLinux 9 installiert und die grundlegende Verwendung von Podman zur Verwaltung von Images und Containern gelernt. Außerdem hast du gelernt, wie du Pods mit Podman erstellst und ausführst.

Das könnte dich auch interessieren …