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:

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.

Podman Umgebung

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

Podman Hilfe

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.

Suche nach Podman Bild

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.

Bilder mit dem Befehl podman pull abrufen

Um das Alpine-Image zu entfernen, kannst du die Option „rmi“ (siehe unten) verwenden.

podman rmi alpine

podman image entfernen

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.

Podman Container ausführen

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.

Podman Container verwalten

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

Podman Start und Stopp

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.

Podman verwaltet Bände

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.

Bandmontagen

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.

Zugriffs-Container-Volumen

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.

Verwende Commit, um eigene Bilder zu erstellen

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.

Benutzerdefiniertes Bild erstellt

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.

nginx test

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 .

Dockerfiles zum Erstellen von Images verwenden

Sobald der Vorgang abgeschlossen ist, überprüfe das neue Image auf dem Rechner.

podman images

Du erhältst dann das „hakase-image“.

Liste podman Bilder

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.

Zugang zum Testbild

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.

Das könnte dich auch interessieren …