Installation und Verwendung von Podman (Docker Alternative) unter Ubuntu 20.04

Podman ist ein Open-Source-Tool zur Verwaltung von Containern, Images, Volumes und Pods (Gruppen von Containern). Es nutzt die APIs der libpod-Bibliothek für die Verwaltung von Container-Lebenszyklen und unterstützt mehrere Container-Image-Formate, einschließlich OCI (Open Container Initiative) und Docker-Images.

Podman ist eine OCI (Open Container Initiative) konforme Container-Engine. Sie ist mit der Docker CLI-Schnittstelle kompatibel und ermöglicht es dir, Container ohne Root-Rechte auszuführen. Podman wurde als Teil von Red Hat Enterprise Linux veröffentlicht und soll die nächste Generation von Linux-Container-Tools sein, mit denen man schneller experimentieren und neue Funktionen entwickeln kann.

In diesem Lernprogramm lernst du, wie du Podman auf dem Ubuntu 20.04 System installierst. Du wirst Podman installieren und die grundlegenden Funktionen von Podman für die Verwaltung von Docker-Containern, Images und Volumes kennenlernen.

Voraussetzungen

  • Ein Ubuntu 20.04 Server – stelle sicher, dass alle Pakete die neueste Version sind, um veraltete Abhängigkeiten loszuwerden, die bei der Installation zu einem Fehler führen können.
  • Ein Benutzer mit Root-Rechten oder der Benutzer root – um neue Pakete zu installieren und die Konfiguration systemweit zu ändern.

Installation von Podman unter Ubuntu 20.04

Zunächst fügst du ein Drittanbieter-Repository und einen Schlüssel für die Installation von Podman auf dem Ubuntu 20.04-System hinzu.

1. Führe den folgenden Befehl aus, um Umgebungsvariablen in die Datei„/etc/os-release“ zu exportieren.

. /etc/os-release

2. Füge das Podman-Repository mit der stabilen Version hinzu und füge den GPG-Schlüssel mit dem folgenden Befehl zu deinem System hinzu.

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list

curl -L „https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key“ | sudo apt-key add –

3. Aktualisiere die Ubuntu-Repositories und aktualisiere alle Pakete auf die neueste Version.

sudo apt update
sudo apt -y upgrade

Podman Repository hinzufügen ubuntu 20.04

4. Danach installierst du podman mit dem unten stehenden apt-Befehl.

sudo apt install podman

Gib„y“ ein und drücke„Enter„, um die Installation fortzusetzen.

Podman auf Ubuntu 20.04 installieren

5. Nachdem die Installation abgeschlossen ist, überprüfe die Podman-Version mit dem folgenden Befehl.

podman version

Unten siehst du eine ähnliche Ausgabe.

Podman Version prüfen

Wie du siehst, hast du podman v3.3.1, kompiliert mit Go 1.16 für die Linux-Architektur amd64 (64-bit), installiert.

Neuen Benutzer anlegen und hello-world Container starten

Podman ermöglicht es dir, Container unter einem Benutzer ohne Root-Rechte zu starten. In diesem Schritt wirst du einen neuen Benutzer anlegen und den Container „hello-world“ auf der Grundlage des Docker-Images ausführen.

1. Führe den folgenden Befehl aus, um einen neuen Benutzer „johndoe“ hinzuzufügen.

useradd -m -s /bin/bash johndoe
passwd johndoe

Gib ein neues Passwort für den Benutzer„johndoe“ ein.

2. Melde dich als Benutzer „johndoe“ an und starte den Container mit dem Docker-Image „hello-world“.

Melde dich als Benutzer„johndoe“ an.

su - johndoe

Starte den neuen Container mit dem Docker-Image„hello-world“ mit dem Befehl podman.

podman run hello-world

Du wirst gefragt, welche Container-Registry du verwenden möchtest. Wähle die Container-Registry „docker.io“ und du wirst eine ähnliche Ausgabe wie unten sehen.

Podman run hello-world container

3. Um deine Container und Images auf dem lokalen Rechner zu überprüfen, führe den folgenden Befehl aus.

podman ps -a
podman images

Du wirst sehen, dass ein neuer Container erstellt wurde und der aktuelle Status„Exited“ lautet. Der Container basiert auf dem Docker-Image„hello-world„.

Podman prüft Container und Images

Grundlegende Verwendung von Podman

In dieser Anleitung lernst du, wie du Podman für die Verwaltung von Containern, Images und Volumes verwendest. Du lernst die grundlegenden Podman-Befehle für die Verwaltung von Containern kennen. Die Befehle, die du in diesem Leitfaden verwendest, entsprechen zu 100 % den Docker CLI-Befehlen.

1. Um die mit podman kompatiblen Container-Images zu finden, führe den folgenden podman-Befehl aus.

podman search nginx

Daraufhin wird dir eine Liste mit Container-Images aus der Standard-Docker-Image-Registry und der Quay-Images-Registry angezeigt.

Wähle das Container-Image „nginx“ aus der Docker-Registry und lade es mit dem unten stehenden podman-Befehl auf deinen lokalen Rechner herunter.

podman pull nginx:alpine

Wähle die Container-Registry„docker.io“ und der Download des Nginx-Container-Images beginnt.

Podman downloaad container images

2. Um die verfügbaren Container-Images auf deinem lokalen Rechner zu prüfen, führe den unten stehenden Befehl podman aus.

podman images

Du wirst zwei Images sehen – hello-world und nginx.

Bilder auf dem lokalen Rechner mit podman prüfen

3. Um einen neuen Container mit dem Abbild„nginx:alpine“ zu starten und auszuführen, führst du den Befehl podman mit der Option„run“ wie folgt aus.

podman run -it --rm -d -p 8080:80 --name web nginx:alpine

Einige Optionen musst du kennen:

  • -i oder –interactive – hält den Container STDIN offen, auch wenn er nicht verbunden ist.
  • -t oder –tty – weist ein Pseudoterminal zu, das dein Terminal mit STDIN und STDOUT des Containers verbindet.
  • –rm – entfernt den Container automatisch, wenn der Container verlassen oder gestoppt wird.
  • -d – lässt den Container im Hintergrund laufen und entfernt ihn, nachdem er gelaufen ist.
  • -p 8080:80 – ordnet den Port zwischen Container und Hostsystem zu. Der Port „80“ des Containers wird auf den Port „8080“ des Hostsystems abgebildet.
  • –name web – gib den neuen Containernamen als „web“ an.
  • nginx:alpine – das Bild, das wir verwenden, ist „nginx:alpine“.

Du wirst den zufälligen String und die Nummer deines laufenden Containers sehen. Überprüfe deinen laufenden Container mit dem unten stehenden Befehl podman.

podman ps

Du wirst die folgende Ausgabe sehen.

Container mit podman starten und ausführen

Der Containerstatus ist„Up“ und gibt den TCP-Port„8080“ auf dem Host-Rechner frei.

Öffne deinen Webbrowser und rufe die IP-Adresse deines Servers mit dem Port„8080“ wie folgt auf

http://192.168.1.15:8080/

Du wirst die Standard-„index.html“ deines nginx-Containers sehen.

Container-Web basierend auf Nginx-Image wird ausgeführt

4. Außerdem kannst du die Logs deines Containers mit der Option„logs“ (siehe unten) überprüfen.

podman logs web

Podman checkc logs

Oder du kannst die letzte Anzahl von Zeilen des Container-Logs mit der Option„–tail“ (siehe unten) angeben.

podman logs --tail 10 web

Podman prüft aktuelle Logs

5. Jetzt kannst du den laufenden Container mit der podman-Option„stop“ wie unten beschrieben stoppen.

podman stop web

Dein Container „web“ wird gestoppt. Überprüfe dies mit dem unten stehenden Befehl.

podman ps
podman ps -a

Du wirst eine ähnliche Ausgabe wie unten sehen.

Container podman anhalten

Der Container „web“ wird gestoppt und automatisch gelöscht, weil du die Option„–rm“ in deinem podman-Befehl verwendest.

6. Als Nächstes lernst du, wie du das benutzerdefinierte Volume verwendest, um die Standard-„index.html“ im neuen Container zu ändern.

Erstelle ein neues Verzeichnis„~/data“ und die Datei„index.html“ mit dem folgenden Befehl.

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

Kopiere das unten stehende HTML-Skript und füge es ein.

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

Drücke die Taste„Strg+x„, gib„y“ ein und drücke dann„Enter„, um die Konfiguration zu speichern und zu beenden.

Führe nun den folgenden podman-Befehl aus, um den neuen Container mit benutzerdefiniertem Volumen zu starten.

podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine

Eine Option, die du kennen musst:

  • -v – gib das Volume für deinen Container an. Das Verzeichnis„~/data“ wird in das neue Container-Verzeichnis„/usr/share/nginx/html“ eingebunden.

Führe nun den folgenden Befehl aus, um den laufenden Container zu überprüfen.

podman ps

Du wirst sehen, dass der neue Container„web“ den Status„Up“ hat.

Benutzerdefiniertes Volumen mit podman verwenden

Als nächstes öffnest du deinen Webbrowser und gibst die IP-Adresse deines Servers mit dem Port„8080“ ein.

http://192.168.1.15:8080/

Du wirst die von dir erstellte index.html-Seite oben sehen, was bedeutet, dass das Verzeichnis„~/data“ in den„web„-Container eingebunden ist.

Container-Web mit benutzerdefinierter index.html, die von Volume bereitgestellt wird

7. Als Nächstes kannst du dich in den laufenden Container mit der Option„exec“ einloggen und die Shell „sh“ ausführen.

Vergewissere dich mit dem folgenden Befehl, dass dein Container„web“ läuft.

podman ps

Führe nun den Befehl podman aus, um dich in den Container „web“ einzuloggen.

podman exec -it web /bin/sh

Überprüfe den Hostnamen des Containers „web“.

hostname

Überprüfe die IP-Adresse und die Routing-Tabelle des Containers „web“.

ip a
route -n

Gib nun„exit“ ein, um dich aus dem Container„web“ abzumelden.

Podman loggt sich in den Container ein

8. Bereinige jetzt deine Umgebung mit dem folgenden Befehl.

Stoppe den Container„web“ mit dem unten stehenden Befehl podman.

podman stop web

Entferne alle Container mit dem Status „Exited“ mit dem unten stehenden podman-Befehl.

podman rm $(podman ps --filter "status=exited" -q)

Beendete Container mit podman aufräumen

Fazit

Herzlichen Glückwunsch! Du hast Podman erfolgreich auf dem Ubuntu 20.04 System installiert. Außerdem hast du gelernt, wie du mit Podman Container-Images herunterlädst, Container startest, den Container-Status und die Logs überprüfst und wie du mit Podman Volumes verwaltest. Im nächsten Schritt kannst du versuchen, deine eigenen Images mit OCI-Spezifikationen für den Push/Upload deiner Anwendung in die Container-Registry zu erstellen.

Das könnte dich auch interessieren …