Einführung
Podman ist eine Container-Engine zum Ausführen und Verwalten von OCI-Containern unter Linux. RedHat entwickelt es als direkte Alternative zu Docker, der berühmten Container-Management-Plattform, mit der alles begann.
Dieses Tutorial hilft Ihnen zu verstehen, wie Podman funktioniert, indem es seine Befehlssyntax erklärt und praktische Beispiele für die Verwendung von Podman-Befehlen bereitstellt.
Voraussetzungen
- Zugriff auf ein Befehlszeilen-/Terminalfenster.
- Podman installiert und konfiguriert (siehe So installieren Sie Podman unter macOS oder So installieren Sie Podman unter Ubuntu).
Podman-Befehle
Podman hat eine sehr ähnliche Befehlssyntax wie Docker. Der Haupt-podman
Auf den Befehl folgen Podman-Verwaltungsbefehle und -optionen:
podman [command] [options]
Nachfolgend finden Sie eine Tabelle mit allen Podman-Befehlen:
Befehl | Beschreibung |
---|---|
attach | Mit seinem Namen oder seiner ID an einen laufenden Container anhängen. |
auto-update | Container-Auto-Update-Richtlinie verwenden, um Container zu aktualisieren. |
build | Containerfiles-Anweisungen verwenden, um ein Image zu erstellen. |
commit | Erstellen Sie ein neues Bild, das die an einem Container vorgenommenen Änderungen widerspiegelt. |
container | Podman-Container verwalten. |
cp | Kopiert Dateien/Verzeichnisse aus einem Container in das lokale Dateisystem und umgekehrt. |
build | Container erstellen, ohne ihn zu starten. |
diff | Änderungen anzeigen, die an einem Container oder Bild vorgenommen wurden. |
events | Podman-Ereignisse anzeigen. |
exec | Führen Sie einen Prozess in einem laufenden Container aus. |
export | Erstellen Sie ein TAR-Archiv, das den Inhalt des Dateisystems des Containers enthält. |
generate | Erstellen Sie eine strukturierte Ausgabe basierend auf einem Container, Volume oder Pod. |
healthcheck | Container-Zustandsprüfungen verwalten. |
history | Bildverlauf anzeigen. |
image | Bilder verwalten. |
images | Im lokalen Speicher verfügbare Bilder auflisten. |
import | Importieren Sie einen Dateisystem-Image-Tarball. |
info | Podman-Systeminformationen anzeigen. |
init | Container initialisieren. |
inspect | Container- oder Image-Konfiguration anzeigen. |
kill | Container löschen. |
load | Lade ein im Containerarchiv verfügbares Bild. |
login | Container-Registry-Anmeldung. |
logout | Von einer Containerregistrierung abmelden. |
logs | Containerprotokolle anzeigen. |
machine | Verwalten Sie die Podman-VM. |
manifest | Erstellen und verwalten Sie Manifestlisten und Bildindizes. |
mount | Mounten Sie das Root-Dateisystem eines Containers oder listen Sie aktuell gemountete Container auf. |
network | Podman-Netzwerke verwalten. |
pause | Container-Prozesse pausieren. |
play | Spielen Sie einen Container, ein Volume oder einen Pod ab. |
pod | Podman-Pods verwalten. |
Port | Portzuordnungen auflisten oder eine containerspezifische Zuordnung für den Container auflisten. |
ps | Laufende Container auflisten. |
pull | Kopieren Sie ein Bild aus einer Registrierung in den lokalen Speicher. |
push | Push ein Bild von einem lokalen Rechner an ein bestimmtes Ziel. |
rename | Container umbenennen. |
restart | Container neu starten. |
rm | Container entfernen. |
rmi | Entfernen Sie ein Bild aus dem lokalen Speicher. |
run | Führen Sie einen Befehl in einem Container aus. |
save | Bild in einer lokalen Datei speichern. |
search | Suchen Sie in einer Registrierung nach einem Bild. |
secret | Geheimnisse manipulieren. |
start | Container starten. |
stats | Statistiken zur Ressourcennutzung anzeigen. |
stop | Container stoppen. |
system | Verwalten Sie die Podman-Systeme. |
tag | Ordnen Sie einem lokalen Bild einen Namen zu. |
top | Zeige die Prozesse, die in einem Container laufen. |
unmount | Root-Dateisystem eines Containers aushängen. |
unpause | Container-Prozesse anhalten. |
unshare | Starte einen Prozess in einem neuen Benutzernamensraum. |
untag | Tags von einem lokalen Bild entfernen. |
version | Versionsinformationen anzeigen. |
volume | Containervolumen verwalten. |
wait | Warten Sie, bis ein Container stoppt. |
Podman-Tutorial
Obwohl Podman in erster Linie eine Container-Engine ist – es wurde entwickelt, um OCI-Container zu erstellen und auszuführen, können Benutzer auch podman
verwenden Befehle zum Verwalten von Container-Images.
In den folgenden Abschnitten wird erläutert, wie Sie mit Podman Bilder, Container und Pods erstellen und bearbeiten.
Anzeigen der Podman-Hilfe
Über die Befehlszeile können Sie schnell auf die Podman-Dokumentation verweisen. Um verfügbare podman
anzuzeigen Befehle in Ihrem Terminal, geben Sie ein:
podman help
Um das vollständige Podman-Handbuch anzuzeigen, verwenden Sie den man-Befehl:
Podman-Bilder
Die Imageerstellung und -verwaltung in Podman erfolgt mit Buildah, einem Imageerstellungstool, das eine Coreutils-Schnittstelle auf niedrigerer Ebene verwendet. Wenn ein Benutzer einen podman
ausführt Befehl, der sich auf Bilder bezieht, ruft Podman Buildah auf, um die Aktion auszuführen.
Die folgenden Abschnitte zeigen einige wichtige Bildverwaltungsbefehle.
Bilder suchen
Durchsuchen Sie Register nach verfügbaren Bildern mit der search
Befehl.
podman search [search-term]
Begrenzen Sie die Anzahl der Ergebnisse mit --limit
Möglichkeit. Zum Beispiel, um drei Ergebnisse für "centos" zu erzeugen Suchbegriff, geben Sie ein:
podman search --limit 3 centos
Bild prüfen
Bevor Sie ein Podman-Image abrufen, empfiehlt es sich, es zu überprüfen. Verwenden Sie den podman inspect
Befehl und das System gibt Bildmetadaten wie Dateigröße, Architektur, Betriebssystem usw. aus.
podman inspect [repository or image ID]
Verwenden Sie das --format
Option mit podman inspect
Befehl, um bestimmte Metadaten abzurufen. Im Beispiel unten gibt der Befehl nur die Beschreibung des Bildes zurück:
podman inspect --format=’{{.Labels.description}}’ [image ID]
Herunterladen von Bildern
Das Abrufen von Bildern aus Online-Repositories erfolgt mithilfe von podman pull
Befehl. Die Syntax lautet:
podman pull [registry/image]
Das Beispiel veranschaulicht das Abrufen eines Bildes von fedoraproject.org Registrierung:
Laufende Bilder
Führen Sie Podman-Images mit podman run
aus :
podman run [image]
Wenn das Image nicht lokal verfügbar ist, zieht Podman es aus einer Online-Registrierung und führt es dann als Container aus.
Anzeigen von Bildern
Die podman images
Unterbefehl wird verwendet, um lokal verfügbare Bilder aufzulisten:
podman images
Verwenden Sie Optionen, um die Suchergebnisse einzugrenzen. Der --filter
filtert die Ausgabe basierend auf den von Ihnen angegebenen Bedingungen. Der folgende Befehl sucht beispielsweise nach allen Bildern, die "redhat" enthalten im Namen:
podman images --filter reference=redhat
Erstellen benutzerdefinierter Images
Um benutzerdefinierte Images mit Podman zu erstellen, benötigen Sie eine Docker- oder Containerdatei. Diese Dateien enthalten Anweisungen, die das Buildah-Tool verwendet, um ein Image zu erstellen.
Das Erstellen von Dateien wird mit podman build
durchgeführt Befehl. Um beispielsweise ein Bild aus einem Verzeichnis zu erstellen, das das Anweisungsskript enthält, führen Sie den folgenden Befehl aus:
podman build .
Buildah sammelt den notwendigen Dateikontext und erstellt ein Image.
Bilder entfernen
Der podman rmi
Der Befehl wird verwendet, um Bilder aus dem lokalen Speicher zu entfernen. Stellen Sie vor dem Entfernen eines Podman-Images sicher, dass alle zugehörigen Container gestoppt und entfernt wurden.
Entfernen Sie ein Bild mithilfe von podman rmi
Befehl gefolgt vom Bildnamen oder der ID:
podman rmi [image-name-or-id]
Die Ausgabe bestätigt, dass das Bild entfernt wurde.
Podman-Container
Das Erstellen und Verwalten von Containern ist die Hauptfunktion von Podman. Im folgenden Abschnitt finden Sie einige der gängigsten Containerverwaltungsbefehle.
Container ausführen
Der podman run
Der Befehl hat die gleichen Funktionen wie docker run. Die Optionen, die dem Befehl folgen, hängen vom Typ des ausgeführten Containers ab. Das folgende Beispiel veranschaulicht die Ausführung eines httpd Beispiel, indem Sie ein Bild verwenden, das in docker.io
verfügbar ist Aufbewahrungsort:
podman run -p 8080:80/tcp docker.io/library/httpd
Der Befehl führt den Container aus und zeigt seine Eingabeaufforderung an.
Verlassen Sie die Container-Eingabeaufforderung, indem Sie Strg + C drücken . Dieser Befehl beendet den Container.
Container im Hintergrund ausführen
Verwenden Sie die folgende Syntax, um die Container-Eingabeaufforderung zu überspringen und den Container im Hintergrund auszuführen:
podman run -dt -p 8080:80/tcp docker.io/library/httpd
Wenn der Container erfolgreich gestartet wird, zeigt die Ausgabe des Befehls die lange ID des Containers an.
An Container anhängen
Geben Sie den Container mit dem podman attach
ein Befehl:
podman attach [container-name-or-id]
Das Beispiel zeigt das Anhängen an einen laufenden Alpine Linux-Container unter Verwendung der Container-ID.
Ausgeführte Container anzeigen
Zeigen Sie aktuell ausgeführte Container mit dem ps
an Befehl:
podman ps
Die Befehlsausgabe zeigt eine Liste mit grundlegenden Informationen zum Ausführen von Containern.
Automatisches Löschen von Containern nach dem Schließen
Verwenden Sie --rm
Option mit podman run
um einen Container automatisch zu löschen:
podman run --rm -dt -p 8080:80/tcp alpine:latest
Container starten und stoppen
Verwenden Sie start
und stop
Befehle zum Starten und Stoppen bestehender Container.
podman start [container-id]
Die Ausgabe zeigt die Container-ID.
podman stop [container-id]
Die ID des gestoppten Containers wird angezeigt.
Containern Namen zuweisen
Sie können laufende Container mit der Option --name
benennen mit dem podman run
Befehl. Um beispielsweise einen Alpine-Linux-Container zu benennen, verwenden Sie den folgenden Befehl:
podman run --name AlpineTest -dt -p 8080:80/tcp alpine:latest
Das folgende Bild zeigt, dass podman run
war erfolgreich. Der Podman ps
listet ausgeführte Podman-Container auf, und der Name ist in NAMES
sichtbar Spalte.
Anzeigen von Containerprotokollen
Zeigen Sie Containerprotokolle zum Zeitpunkt der Ausführung mit den podman logs
an Befehl.
podman logs [container-name-or-id]
Verwenden Sie das -l
Flag, um die Protokolle für den neuesten Container anzuzeigen.
Container entfernen
Um einen Podman-Container zu löschen, stellen Sie zunächst sicher, dass der Container gestoppt wurde. Verwenden Sie dann den podman rm
Befehl gefolgt vom Namen oder der ID des Containers.
podman rm [container-name-or-id]
Das folgende Beispiel zeigt das Entfernen von AlpineTest Behälter.
Um einen laufenden oder unbrauchbaren Container zu entfernen, fügen Sie das -f hinzu Option.
podman rm -f [container-name-or-id]
Um mehrere Container auf einmal zu entfernen, listen Sie die Container-IDs getrennt durch ein Leerzeichen auf:
podman rm [container-1-id container-2-id container-3-id]
Podman-Pods
Pods sind Gruppen von Containern, die Ressourcen gemeinsam nutzen. Podman-Pods sind das Merkmal, das Podman von Docker unterscheidet. Die nächsten Abschnitte veranschaulichen einige der gängigen Pod-Operationen in Podman.
Pods auflisten
Verwenden Sie den folgenden Befehl, um alle auf dem System verfügbaren Pods aufzulisten:
podman pod ls
Die Liste zeigt Pod-ID, Name, Status, Zeitpunkt der Erstellung, Infra-ID und die Anzahl der darin enthaltenen Container.
Leere Pods erstellen
Erstellen Sie einen leeren Pod in Podman mit der folgenden Syntax:
podman pod create
Die Ausgabe zeigt die ID des neu erstellten Pods.
Hinzufügen von Containern zu Pods
Um einem Pod einen Container hinzuzufügen, verwenden Sie --pod
Label mit docker run
:
podman run [options] --pod [pod-name-or-id] [image]
Im folgenden Beispiel wird dem Pod ein Alpine-Linux-Container mit der ID e06ed089b454 zugewiesen :
Pods mit Containern erstellen
Podman kann einen Container erstellen und ihn in einem einzigen podman run
zu einem neuen Pod hinzufügen Befehl. Die Syntax enthält den --pod
Bezeichnung:
podman run [options] --pod new:[pod-name] [image]
Das folgende Beispiel führt einen Container mit alpine:latest
aus image und fügt es einem neuen Pod namens AlpineTest hinzu :
Der podman pod ls
Die Befehlsausgabe zeigt den neuen Pod mit zwei Containern.
Pods starten, stoppen und löschen
Starten Sie einen Pod mit dem folgenden Befehl:
podman pod start [pod-name-or-id]
Um einen Pod zu stoppen, führen Sie Folgendes aus:
podman pod stop [pod-name-or-id]
Verwenden Sie zum Entfernen eines angehaltenen Pods und seines Containers:
podman pod rm [pod-name-or-id]
Um laufende Container zu stoppen und zu entfernen und dann den Pod zu entfernen, verwenden Sie -f
Möglichkeit:
podman pod rm -f [pod-name-or-id]
Um mehrere angehaltene Pods mit einem Befehl zu entfernen, listen Sie die Pod-IDs durch ein Leerzeichen getrennt auf:
podman pod rm -f [pod1-id pod2-id pod3-id]
Mögliche Podman-Probleme und deren Behebung
Dieser Abschnitt listet einige allgemeine Podman-Probleme auf und bietet Lösungen.
Privilegierter Port kann nicht verfügbar gemacht werden
Podman ermöglicht Nicht-Root-Benutzern das Ausführen von Containern. Sie sind jedoch darauf beschränkt, nur an nicht privilegierte Ports weiterzuleiten. Wenn Sie versuchen, als Nicht-Root-Benutzer an einen privilegierten Port weiterzuleiten, erhalten Sie die folgende Fehlermeldung:
Die Lösung für dieses Problem besteht darin, einen nicht privilegierten Port auszuwählen oder den Befehl mit sudo auszuführen.
Podman-Suchprobleme
Ein weiteres häufiges Problem ist die podman search
Befehl, der eine leere Ausgabe zurückgibt.
Dieses Problem bezieht sich normalerweise auf /etc/containers/registries.conf
Datei. Öffnen Sie die Datei in einem Texteditor:
sudo nano /etc/containers/registries.conf
Scrollen Sie zum Ende der Datei und stellen Sie sicher, dass Podman über zu durchsuchende Registrierungen verfügt.
Wenn in der Datei keine Registrierungen aufgeführt sind, können Sie die gängigen wie RedHat, Fedora und Docker hinzufügen, indem Sie die folgende Syntax verwenden:
unqualified-search-registries=["registry.access.redhat.com", "registry.fedoraproject.org", "docker.io"]
Speicher die Datei. Die podman search
Die Liste sollte mit Ergebnissen aus den registrierten Online-Registern gefüllt werden.
Fehler:Ungültige Konfiguration angegeben
Beim Hinzufügen von Containern zu einem Pod wird möglicherweise die folgende Meldung angezeigt:
Error: invalid config provided: published or exposed ports must be defined when the pod is created: network cannot be configured when it is shared with a pod
Dieses Problem tritt auf, wenn Sie versuchen, einen Container mit Ports hinzuzufügen, die bei der Pod-Erstellung nicht definiert wurden. Derzeit erlaubt Podman dies nicht.