Haben Sie jemals Docker verwendet, fanden es aber auf Ihrem System zu ressourcenintensiv? Wenn ja, sollten Sie Podman ausprobieren, ein neues Tool von Red Hat, das eine Alternative zu Docker bietet.
Podman ist ein Tool zum nahtlosen Erstellen und Verwalten von Containern. Und in diesem Tutorial installieren Sie Podman und lernen einige grundlegende Nutzungsszenarien kennen. Am Ende müssen Sie entscheiden, ob Podman das richtige Tool für Sie ist.
Bereit? Lesen Sie weiter und beginnen Sie von neuem mit der Verwaltung von Containern!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben.
- Eine Linux-Maschine – Diese Demo verwendet Ubuntu 20.04 LTS, aber alle Linux-Distributionen funktionieren.
- Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
Podman unter Ubuntu installieren
Bevor Sie Container mit Podman verwalten können, müssen Sie Podman zunächst auf Ihrem Computer installieren, da es in Ihrer Linux-Distribution nicht vorinstalliert ist.
Um Podman unter Ubuntu zu installieren, aktualisieren Sie zunächst Ihren APT-Paketmanager und fügen das Podman-Paket-Repository hinzu.
1. Öffnen Sie Ihr Terminal und führen Sie apt update
aus Befehl unten, um sicherzustellen, dass Sie die neuesten Updates installieren. Dieser Befehl stellt sicher, dass keine Paketkonflikte zwischen Ihrem Computer und dem Paket-Repository auftreten.
sudo apt update -y
2. Nachdem Sie Ihren Paketindex aktualisiert haben, führen Sie source
aus Befehl unten, um /etc/os-release
auszuführen Datei als Skript. Dieser Befehl stellt sicher, dass Ihr Computer erkennt, welche Version von Ubuntu Sie verwenden.
Die os-release-Datei enthält Betriebssysteminformationen wie Name und Codename. Die Datei kann auch andere Details wie Versionsnummern verschiedener Komponenten (Kernel, X-Server usw.) enthalten.
source /etc/os-release
3. Führen Sie sh -c echo
aus Befehl unten, um kubic
hinzuzufügen deb-Paket-Repository zu APT. Podman ist in den Standard-Repositorys von Ubuntu nicht verfügbar, daher müssen Sie das Podman-Repository hinzufügen, bevor Sie es installieren.
Der folgende Befehl führt Folgendes aus:
- Erzeugt eine neue Datei (
sh -c
) im/etc/apt/sources.list.d/
Verzeichnis. In dieses Verzeichnis lädt APT deb-Pakete zur Installation auf Ihrem Rechner herunter.
- Stellt sicher, dass Sie eine bestimmte Version von Ubuntu (
{VERSION_ID}
), das ist die Version, die Sie zuvor vonsource
erhalten haben Befehl oben in Schritt zwei.
- Leitet die Ausgabe um (
>
), um am Ende der Datei zu schreiben und sicherzustellen, dass Ihre Eingabe korrekt in die Datei geschrieben wird (sources.list.d/devel:kubic:libcontainers:stable.list
).
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
4. Führen Sie nun wget
aus Befehl unten, um den Repository-Schlüssel zur Liste der vertrauenswürdigen Schlüssel von APT hinzuzufügen.
Red Hat hostet den Schlüssel und signiert ihn mit einem privaten Schlüssel, der nur für andere Personen verifiziert wird, die über ihren öffentlichen Schlüssel verfügen. Dieser Schlüssel stellt sicher, dass Red Hat und nicht jemand anderes die von Ihnen heruntergeladenen und installierten Pakete freigibt.
wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- | sudo apt-key add -
5. Führen Sie apt update
erneut aus Befehl, um sicherzustellen, dass die Paketliste von APT auf dem neuesten Stand ist.
sudo apt update -y
6. Führen Sie als Nächstes apt install
aus Befehl unten, um podman
zu installieren .
sudo apt install podman -y
7. Führen Sie schließlich den folgenden Befehl aus, um Podmans installierten --version
zu überprüfen .
podman --version
Wie Sie unten sehen können, ist die installierte Podman-Version 3.4.2, die neueste Version zum Zeitpunkt des Schreibens, und Ihre kann anders sein.
Sie können auch den folgenden Befehl podman inf ausführen, um weitere Informationen zu Ihrer Podman-Installation anzuzeigen.
podman info
Aktivieren von OCI-Registrierungen
Stellen Sie vor der Verwendung von Podman zum Erstellen von Containern sicher, dass Podman mit den OCI-Registern kommunizieren kann. Podman unterstützt mehrere OCI-Registrierungen gleichzeitig, sodass Sie Container mit unterschiedlichen Repositories erstellen können.
Öffnen Sie /etc/containers/registries.conf
Datei mit einem Texteditor Ihrer Wahl. Diese Datei definiert alle Registrys, mit denen Podman kommunizieren kann. Podman konsultiert diese Datei, um herauszufinden, mit welchen Registrys eine Verbindung hergestellt werden soll.
sudo nano /etc/containers/registries.conf
Füllen Sie nun die registries.conf aus Datei mit den folgenden Zeilen, speichern Sie die Änderungen und schließen Sie den Editor.
Diese Zeilen konfigurieren Podman für die Verwendung der öffentlichen Registrierung auf Docker Hub (docker.io, registration.access.redhat.com ) und die private Registrierung (quay.io ), was empfohlen wird.
[[registry]]
prefix="[quay.io]( )"
location="internal.registry.mirror/quay"
[[registry]]
prefix="[docker.io]( )"
location="internal.registry.mirror/docker"
[[registry]]
prefix="[registry.access.redhat.com]( )"
location="internal.registry.mirror/redhat"
Ausführen von Podman-Containern mit Podman-Privilegien
Nachdem Sie Podman installiert und die Registrierungen konfiguriert haben, können Sie Podman-Container mit Podman-Berechtigungen ausführen. Der Linux-Kernel unterstützt eine breite Palette von Berechtigungsprüfungen für seine Systemaufrufe, wie z. B. Capabilities.
Im Fall von Podman-Containern steuern Funktionen das Standardverhalten von root innerhalb des Benutzernamensraums. Sie können den --privileged
verwenden Flag beim Ausführen eines Containers, um alle Fähigkeiten hinzuzufügen, die nicht bereits im Container vorhanden sind.
1. Führen Sie podman run
aus Befehl unten, um einen fedora
zu erstellen Container ohne Fähigkeiten.
podman run -d fedora sleep 100
2. Führen Sie als Nächstes den folgenden podman top
aus Befehl, um alle Funktionen aufzulisten.
podman top -l capeff
Wie unten gezeigt, hat der reguläre Rootless-Container nur begrenzte Möglichkeiten.
3. Führen Sie podman run
aus Befehl unten, um einen Container mit allen Funktionen zu erstellen (--privileged
).
podman run --privileged -d fedora sleep 100
4. Zuletzt führen Sie podman top
erneut aus Befehl, um den Unterschied in den Fähigkeiten zu überprüfen.
podman top -l capeff
Sie werden feststellen, dass diesem Container aufgrund des Flags –privileged, wie unten gezeigt, alle Funktionen zur Verfügung stehen.
Sie werden feststellen, dass diesem Container aufgrund des Flags –privileged alle Funktionen zur Verfügung stehen, wie gezeigt. Das Flag –privileged ermöglicht, dass der Container mit allen Funktionen ausgeführt wird, nicht nur mit denen, die sich bereits im Container befinden. Dieses Flag ist wichtig, da es den Benutzernamensraum des Containers dem Namensraum des Hosts zuordnet und ihm alle Fähigkeiten von Prozessen gibt, die auf Ihrem System ausgeführt werden.
Wenn Sie beim Starten eines Containers das Flag „–privileged“ nicht festlegen, verfügt der Container über eingeschränkte Funktionen. Im Fall von Containern, die ihren eigenen Benutzernamensraum verwenden, müssen Sie ihnen alle Fähigkeiten explizit zuweisen.
Mit Podman-Images und -Containern arbeiten
Nachdem Sie nun gelernt haben, wie Sie OCI-Registries und -Funktionen für einen Container hinzufügen, können Sie mit Podman-Images und -Containern arbeiten. Für diese Demo verwenden Sie NGINX für ein Image, um einen Container zu erstellen.
1. Führen Sie podman search
aus Befehl unten, um alle verfügbaren Podman-Images für nginx
aufzulisten
podman search nginx
Unten können Sie sehen, dass Sie alle verfügbaren getaggten Bilder für NGINX von docker.io erhalten , quay.io und redhat.com Repo, das Sie zuvor im Abschnitt „Aktivieren von OCI-Registrierungen“ hinzugefügt haben:
- Der INDEX Spalte zeigt, wo sich die Bilder befinden.
- Der OFFIZIELLE Spalte mit OK Der Status zeigt an, dass das Bild in der Zeile von seinem offiziellen Unternehmen erstellt und unterstützt wird. Zum Beispiel NGINX Bild mit OK Status wird von seinem Unternehmen NGINX erstellt und unterstützt. Diese Bilder werden aktualisiert, sobald Sicherheitslücken und Patch-Updates herauskommen.
- Der AUTOMATISIERTE Spalte mit OK Status bedeutet, dass die Bilder automatisierte Builds sind. Diese Bilder werden aktualisiert, sobald Sicherheitslücken und Patch-Updates herauskommen.
2. Nachdem Sie ein zu verwendendes NGINX-Image ausgewählt haben, führen Sie podman
aus Befehl unten zum Herunterladen (pull
) das Image auf Ihren lokalen Computer.
Diese Demo verwendet nginx:alpine, da es das kleinste Image ist und nur im Arbeitsspeicher ausgeführt werden kann, was später bei den Build-Schritten Zeit spart.
podman pull nginx:alpine
An diesem Punkt haben Sie ein neues Image, mit dem Sie einen Container erstellen oder als Basis-Image für andere Container verwenden können.
3. Führen Sie podman images
aus Befehl, um die Informationen Ihres neuen Bildes anzuzeigen
podman images
4. Führen Sie nun podman run
aus Befehl unten, um einen Container aus dem Image zu erstellen (nginx:alpine
) und führen Sie nginx
aus Server auf diesem Bild.
Dieser Befehl führt Folgendes aus:
- Startet den Container interaktiv (
-it
) und ermöglicht das Anschließen eines Terminals.
- Löscht (
--rm
) den Container, nachdem er beendet/stoppt.
- Führt den Container im Hintergrund aus (
--d
) und veröffentlicht (-p
) Port80
auf allen Schnittstellen zu Port8080
auf dem Behälter.
- Geben Sie den Namen des Containers an (
--name web
).
podman run -it --rm -d -p 8080:80 --name web nginx:alpine
Sie erhalten eine zufällige Container-ID, wie unten gezeigt, mit der Sie den Container überwachen/starten/stoppen/entfernen können. Notieren Sie sich die Container-ID, da sie beim Überprüfen von Protokollen oder beim Stoppen eines bestimmten Containers nützlich ist.
5. Führen Sie den folgenden podman ps
aus Befehl (ohne Argumente), um zu überprüfen, ob Ihr Container ausgeführt wird.
podman ps
Sie können sehen, dass der Webcontainer aktiv ist und Port 8080/TCP auf Ihrem Hostcomputer verwendet, um seine Ressource bereitzustellen.
6. Öffnen Sie zur doppelten Überprüfung Ihren Webbrowser und navigieren Sie zu localhost:8080 oder your-server-ip:8080 , wobei Ihre-Server-IP ist die IP-Adresse Ihres Servers.
Wenn Ihr Container funktioniert, sehen Sie den standardmäßigen NGINX-Begrüßungsbildschirm, wie unten gezeigt.
Wenn Sie sich nicht sicher sind, wie der Container eingerichtet ist, oder wenn er Fehler aufweist, führen Sie den folgenden Befehl podman logs aus, um die Protokolldateien für den Container abzurufen. Ersetzen Sie mycontainer durch Ihre Ziel-Container-ID.
podman logs mycontainer
7. Führen Sie einen der podman stop
aus Befehle unten, um Ihren Container zu stoppen. Ersetzen Sie mycontainer
durch Ihre Ziel-Container-ID oder ersetzen Sie web
mit dem tatsächlichen Containernamen.
Da Sie in Schritt vier das Flag –rm verwendet haben, löscht Podman Ihren Container, sobald Sie diesen Container stoppen. Diese Einrichtung trägt dazu bei, Ihren Arbeitsbereich übersichtlich zu halten.
# Stops the container by Container ID
podman stop mycontainer
# Stops the container by Container Name
podman stop web
8. Führen Sie abschließend podman ps
aus Befehl, um alle Container aufzulisten, einschließlich eines angehaltenen Containers.
podman ps -a
Ihr Container wurde gelöscht, als Sie ihn zuvor gestoppt haben, sodass Sie nichts auf der Liste erhalten, wie unten gezeigt.
Schlussfolgerung
In diesem Artikel haben Sie gelernt, Podman zu installieren und mit Images und Containern für Bereitstellungen zu arbeiten. An dieser Stelle können Sie jetzt die OCI-fähigen Images von docker.io verwenden , quay.io und redhat.com Repositories, um eigene Container zu erstellen.
Warum bauen Sie mit diesem neu gewonnenen Wissen Ihre Kubernetes-Pods nicht mit Podman Play Kube oder beginnen Sie mit der Verwendung von Ansible, um Podman-Container zu automatisieren?