Erste Schritte mit Podman: Images, Container und Volumes verwalten
Podman ist eine Container-Laufzeitumgebung, die ähnliche Funktionen wie Docker bietet. Es ist Teil der libpod-Bibliothek und kann zur Verwaltung von Pods, Containern, Container-Images und Container-Volumes verwendet werden. Podman unterscheidet sich stark von Docker, das eine Client-Server-Architektur verwendet und einen Docker-Daemon benötigt, um zu laufen, während Podman keinen Daemon benötigt und auch ohne Root-Rechte problemlos ausgeführt werden kann.
In diesem Lernprogramm zeigen wir dir die grundlegende Verwendung von Podman für die Verwaltung von Containern, Images und Volumes sowie die Erstellung von Container-Images. Um diese Anleitung zu lesen, musst du Podman installiert haben. Hier findest du Anleitungen für verschiedene Betriebssysteme:
- Wie installiere ich Podman auf Ubuntu 22.04
- Erste Schritte mit Podman (Docker Alternative) auf Rocky Linux
- Wie man Podman (Docker-Alternative) unter Ubuntu 20.04 installiert und verwendet
- Wie man Podman als Docker-Alternative unter Debian 11 installiert
Voraussetzungen
- Ubuntu Server mit installiertem Podman
- Grundlegende Kenntnisse über Docker machen es einfacher
1. Grundlegende Podman-Befehle
Nachdem wir Podman auf dem Ubuntu-System installiert haben, müssen wir wissen, wie wir Podman selbst überprüfen können. Wir müssen prüfen, welche Version bereits auf dem System installiert ist, wie die Podman-Systemumgebung aussieht und wie die grundlegende Hilfe funktioniert.
Um die installierte Version von Podman auf dem Rechner zu ermitteln, benutze den folgenden Befehl.
podman version
Jede Podman-Version > 1.0.1 ist für diese Anleitung geeignet.
Überprüfe nun die Podman-Umgebungseinstellungen.
podman info
Es wird dir die Systemumgebung der Podman-Installation angezeigt. Dazu gehören die Informationen zu den Host-Paketen, den Registern und dem Speicher.
Als Nächstes führst du den folgenden Befehl aus, um alle verfügbaren Podman-Befehlsoptionen anzuzeigen.
podman --help
Um die Hilfe für einen bestimmten Befehl anzuzeigen, kannst du den folgenden Befehl verwenden.
podman pod help
2. Verwalten von Container-Images mit Podman
Jetzt geht es an die Verwaltung von Container-Images mit Podman. Es gibt einige grundlegende Befehle, die du für die Verwaltung von Container-Images kennen musst. Dazu gehören die Suche nach Images, das Herunterladen von Images, die Anzeige der verfügbaren Images auf dem lokalen System und das Entfernen von Images.
Führe den folgenden Befehl aus, um ein Image zu suchen.
podman search nginx
Der Befehl sucht nach Images, die das Wort „nginx“ enthalten, in allen verfügbaren Repositories, die bereits in der Konfigurationsdatei „/etc/containers/repositories.conf“ definiert sind.
Lade nun einige Bilder mit den unten stehenden „podman pull“-Befehlen herunter.
podman pull docker.io/library/nginx podman pull docker.io/library/alpine
Sobald das erledigt ist, überprüfe alle verfügbaren Images auf dem Server-Rechner.
podman images
Jetzt hast du die Images von nginx und alpine auf dem System.
Um das Alpine-Image zu entfernen, kannst du die Option „rmi“ (siehe unten) verwenden.
podman rmi alpine
Als Ergebnis hast du nur noch das nginx Container-Image auf dem System.
3. Verwalten von Containern
In diesem Schritt haben wir etwas über die Verwaltung von Container-Images gelernt. Im nächsten Schritt werden wir lernen, wie man Container mit Podman erstellt und verwaltet.
Um einen neuen Container zu erstellen, können wir den Befehl „podman run“ (siehe unten) verwenden.
podman run -d -p 8000:80 --name hakase-nginx docker.io/library/nginx
Der Befehl erstellt einen neuen Container namens „hakase-nginx“, der auf dem nginx-Image basiert, und gibt den Port 8000 auf dem Host-Rechner frei.
Details zu den Befehlsoptionen:
-d – lässt den Container im Hintergrund laufen und gibt als Ergebnis nur die Container-ID aus.
-p 8000:80 – Portzuordnung für den Container und das Hostsystem. Port 8000 auf dem Host-Rechner und Port 80 auf dem Container.
–name hakase-nginx – gib den Containernamen mit „hakase-nginx“ an.
Jetzt werden alle laufenden Container auf dem System angezeigt.
podman ps
Es wird dir angezeigt, dass der Container „hakase-nginx“ läuft und in Betrieb ist.
Wenn du alle verfügbaren Container überprüfen willst, kannst du die Option „-a“ verwenden.
podman ps -a
Jetzt erhältst du alle verfügbaren Container mit unterschiedlichen Zuständen.
Nachdem du alle laufenden Container auf dem Hostrechner erhalten hast, zeigen wir dir, wie du alle Prozesse innerhalb des Containers überprüfst, sie an den laufenden Container anhängst und den Container stoppst und entfernst.
Überprüfe den Prozess innerhalb des laufenden Containers mit dem folgenden Befehl.
podman top hakase-nginx
Um den laufenden Container anzuhängen und auf ihn zuzugreifen, kannst du den Befehl „exec“ wie folgt verwenden.
podman exec -it hakase-nginx /bin/bash
Überprüfe innerhalb des Containers „hakase-nginx“ die Nginx-Version.
nginx -V
Du erhältst das unten stehende Ergebnis.
Gib nun „exit“ ein, um dich aus dem Container abzumelden.
Als Nächstes stoppst du den „hakase-nginx“-Container.
podman stop hakase-nginx
Entferne dann den Container.
podman rm hakase-nginx
Wenn du das Stoppen und Entfernen des laufenden Containers erzwingen willst, kannst du die Option ‚-f‘ force verwenden.
podman rm hakase-nginx -f
4. Volumen verwalten
Seit Version 0.12 unterstützt der Podman das Erstellen und Verwalten von lokal begrenzten Volumes. Wenn du also eine ältere Version verwendest, wird dir der Befehl „podman volume“ nicht zur Verfügung stehen.
Erstelle nun ein neues lokales Volume mit dem folgenden Befehl.
podman volume create hakase-volume
Danach zeigst du alle verfügbaren Volumes auf dem System an.
podman volume ls
In der Liste findest du dann das „hakase-volume“.
Um die Details des Volumes „hakase-volume“ zu überprüfen, können wir die Option „inspect“ wie folgt verwenden.
podman volume inspect hakase-volume
Du wirst sehen, dass der „MountPoint“ des Volumes auf das lokale Verzeichnis „/var/lib/containers/storage/hakase-volume/_data“ zeigt.
Gehe in dieses Verzeichnis und erstelle eine neue index.html-Datei.
cd /var/lib/containers/storage/hakase-volume/_data echo "<h1><center>This is custom index and volume - Hello Podman</center></h1>" > index.html
Erstelle nun einen neuen Container und binde das „hakase-volume“ in den Container ein.
podman run -d -p 8000:80 -v hakase-volume:/usr/share/nginx/html --name hakase-nginx docker.io/library/nginx
Sobald der Container erstellt ist, überprüfe die verfügbaren Volumes im Container mit dem folgenden Befehl.
podman inspect -f '{{ json .Mounts }}' hakase-nginx | jq
Am Ende des Ergebnisses findest du das „hakase-volume“ im Container.
Als nächstes überprüfst du die IP-Adresse des Containers.
podman inspect -f '{{ .NetworkSettings.IPAddress }}' hakase-nginx
Rufe den Container über den HTTP-Port mit httpie auf.
http http://10.88.0.4/
Du erhältst die benutzerdefinierte Datei index.html, die auf dem „hakase-volume“ erstellt wurde.
Wenn du das Volume entfernen möchtest, kannst du die Option „rm“ verwenden.
podman volume rm hakase-volume
Das „hakase-volume“ wird dann entfernt.
5. Benutzerdefinierte Bilder mit Commit erstellen
Jetzt werden wir mit Podman benutzerdefinierte Container-Images erstellen. Podman ermöglicht es dir, eigene Abbilder auf der Grundlage des geänderten Containers zu erstellen oder neue eigene Abbilder mit Hilfe der „Dockerdatei“ zu erstellen.
In diesem Abschnitt werden wir neue benutzerdefinierte Images auf der Grundlage des geänderten Containers mit dem Befehl „podman commit“ erstellen.
Lade das Master-Image „ubuntu“ herunter.
podman pull docker.io/library/ubuntu
Starte nun den Container mit dem Image ubuntu. Innerhalb des Containers führst du den Befehl „bash“ aus, der die Repositories aktualisiert und das nginx-Paket installiert.
podman run --name container-temp ubuntu bash -c "apt update && apt install -y nginx"
Warte auf die Installation von nginx im Container.
Sobald sie abgeschlossen ist, erstellst du mit dem folgenden Befehl ein neues benutzerdefiniertes Image auf der Basis von „container-temp“.
podman commit container-temp my-nginx
Als Nächstes überprüfst du die verfügbaren Images auf dem System.
podman images
Du wirst ein neues Image namens „my-nginx“ in der Liste finden.
Wenn du den Container mit dem Image „my-nginx“ starten willst, führe den folgenden Befehl aus.
podman run -dt -p 8001:80 --name nginx01 my-nginx /usr/sbin/nginx -g 'daemon off;'
Überprüfe nun den laufenden Container und seine IP-Adresse.
podman ps podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx01
Es wird dir angezeigt, dass der Container „nginx01“ läuft. Danach greifst du auf den HTTP-Port des Containers „nginx01“ zu.
http -p h 10.88.0.19
Als Ergebnis erhältst du die HTTP-Header-Antwort wie unten dargestellt.
6. Benutzerdefinierte Images mit Dockerfile erstellen
Jetzt erstellen wir ein neues benutzerdefiniertes Container-Image mit dem Dockerfile.
Lege ein neues Projektverzeichnis an und erstelle darin ein neues „Dockerfile“.
mkdir project; cd project/ vim Dockerfile
Füge die folgende Konfiguration ein.
FROM ubuntu
# Install Nginx
RUN \
apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo „\ndaemon off;“ >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
# Define mountable directories.
VOLUME [„/etc/nginx/sites-enabled“, „/etc/nginx/certs“, „/etc/nginx/conf.d“, „/var/log/nginx“, „/var/www/html“]
# Define the working directory.
WORKDIR /etc/nginx
# Define default command.
CMD [„nginx“]
# Expose ports.
EXPOSE 80
EXPOSE 443
Speichere und schließe.
Führe nun den unten stehenden Podman aus, um ein neues benutzerdefiniertes Abbild mithilfe der Dockerdatei zu erstellen.
podman build -t hakase-image .
Sobald der Vorgang abgeschlossen ist, überprüfe das neue Image auf dem Rechner.
podman images
Du erhältst dann das „hakase-image“.
Als Nächstes erstellst du einen neuen Container auf Basis des „hakase-image“, indem du den folgenden Befehl ausführst.
podman run -d -p 8002:80 --name nginx02 hakase-image
Überprüfe danach den Container „nginx02“ und seine IP-Adresse.
podman ps podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx02
Vergewissere dich, dass der „nginx02“-Container aktiv ist und läuft.
Überprüfe nun den Container mit dem Tool httpie.
http 10.88.0.21
Du bekommst die Standard-Nginx-Seite und ihren HTTP-Header angezeigt.
Abschließend kannst du nun Container, Images und Volumen mit Podman verwalten. Und du kannst mit dem Dockerfile neue benutzerdefinierte Images für deine Anwendung erstellen.