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.
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:
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
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:
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.
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:
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.
Und schließlich kannst du auch die Option„–filter“ verwenden.
podman search httpd --filter=is-official
Damit werden nur offizielle Container-Images angezeigt.
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.
Nachdem du die Quelle ausgewählt hast, beginnt der Downloadprozess.
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.
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.
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.
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
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:
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:
Ü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“.
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.
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.
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.
Im Webbrowser auf http://192.168.5.21:8080/ sollte dir die benutzerdefinierte Seite wie folgt angezeigt werden:
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:
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.
Du kannst nun die Option„inspect“ für den Pod verwenden.
podman pod inspect httpdTest
Du solltest detaillierte Informationen über den Pod httpdTest erhalten.
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:
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.