Sie möchten einen Testdienst, ein Web-Tool oder ein Linux-Image starten, ohne Ihr Konto zur Gruppe docker hinzuzufügen. Podman kann Container aus einer Benutzersitzung ausführen, mit Speicher und Prozessen, die an Ihre UID gebunden sind. Das ist praktisch für einen sauberen Start, entbindet jedoch nicht davon, das Image, die Volumes oder die veröffentlichten Ports zu kontrollieren.

Podman installieren und den rootless Modus überprüfen
Unter Debian oder Ubuntu installieren Sie das Paket aus den Repositories Ihrer Distribution. Fedora enthält es ebenfalls in seinen Standard-Repositories.
sudo apt update
sudo apt install podman
podman --version
podman info --debug
Führen Sie dann podman info --debug mit Ihrem üblichen Konto aus, ohne sudo. Die Ausgabe sollte einen rootless Kontext anzeigen. Podman verwendet dann Ihren Benutzerbereich und die in /etc/subuid und /etc/subgid definierten Bereiche, um die Container-IDs zuzuordnen.
Eine Meldung über newuidmap, subuid oder subgid weist auf eine unvollständige Vorbereitung hin. Umgehen Sie den Fehler nicht, indem Sie direkt zu root wechseln. Überprüfen Sie zunächst Ihren Eintrag mit dem folgenden Befehl und wenden Sie dann die Methode an, die von Ihrer Distribution dokumentiert ist, falls diese fehlt.
grep "^$USER:" /etc/subuid /etc/subgid
Einen ersten Container ohne Privilegien starten
Beginnen Sie mit einem winzigen Image und einem Befehl, der sich selbst stoppt. So überprüfen Sie den Download des Images, den lokalen Speicher und die Ausführung, ohne einen Dienst offen im Netzwerk zu lassen.
podman run --rm docker.io/library/alpine:latest echo "Podman funktioniert"
Die Option --rm entfernt den Container nach dem Beenden. Das Image bleibt im Cache. Um die Images und Container zu sehen, einschließlich der gestoppten, verwenden Sie:
podman images
podman ps -a
Für einen Dienst, der verfügbar bleiben soll, geben Sie ihm einen aussagekräftigen Namen. Dieses Beispiel startet nginx im Hintergrund und veröffentlicht den Port 8080 nur auf der lokalen Maschine.
podman run -d --name web-test
-p 127.0.0.1:8080:80
docker.io/library/nginx:alpine
podman ps
curl -I http://127.0.0.1:8080
Das Präfix 127.0.0.1: verhindert, dass dieser Test auf allen Netzwerk-Interfaces exponiert wird. Wenn Sie nur -p 8080:80 schreiben, überprüfen Sie das Ergebnis mit podman port web-test und mit ss -ltnp. Auf einem Server öffnen Sie einen öffentlichen Port nur, nachdem Sie die Firewall und die Listenadresse ausgewählt haben.
Den Status, die Protokolle lesen und den Dienst ordentlich stoppen
Ein gestarteter Container beweist nicht, dass die Anwendung reagiert. Überprüfen Sie seinen Status, die letzten Protokolle und seine Netzwerkzuordnung, bevor Sie das Image oder die Konfiguration ändern.
podman inspect web-test --format '{{.State.Status}}'
podman logs --tail 50 web-test
podman port web-test
podman stop web-test
podman rm web-test
podman inspect zeigt die tatsächlich angewendeten Parameter. Das ist zuverlässiger, als einen Befehl erneut zu lesen, der in Ihrer Historie kopiert wurde. Behalten Sie auch den Namen des Images und dessen Tag in Ihrer Dokumentation. Ein Tag latest kann beim nächsten Download auf eine andere Version zeigen. Für eine nachhaltige Nutzung wählen Sie eine präzise Version und planen Sie dessen Aktualisierung.
Die Grenzen des rootless und die zu vermeidenden Fallstricke
- Ein rootless Container beschränkt die Auswirkungen auf den Host, aber ein unsicheres Image, ein als Variable injectiertes Geheimnis oder ein schreibbarer Volume bleiben Risiken.
- Vermeiden Sie
--privileged,--network hostund das Einbinden sensibler Verzeichnisse. Diese Optionen verringern die Isolation erheblich. - Mounten Sie Daten schreibgeschützt, wenn die Anwendung sie nicht ändern muss, z.B.
-v "$HOME/site:/usr/share/nginx/html:ro". - Ports unter 1024, bestimmte Geräte und einige Netzwerkbeschränkungen erfordern eine zusätzliche Konfiguration. Fügen Sie nicht reflexartig Privilegien hinzu.
- Podman akzeptiert einen Großteil der Docker-Syntax, jedoch verhalten sich Dienste, Netzwerke und Speicher nicht immer gleich. Testen Sie ein Projekt in einem isolierten Verzeichnis, bevor Sie migrieren.
Die Gruppe docker gewährt oft einen sehr breiten Zugang zum Docker-Dämon. Podman rootless vermeidet diese Gewohnheit für Container, die von Ihrem Konto aus gestartet werden. Um die Installation eines Docker-Engines mit dieser Berechtigungswahl zu vergleichen, können Sie auch unser Handbuch über Docker auf Debian nachlesen.
Die offizielle Dokumentation von Podman beschreibt die Funktionsweise von rootless, und das Handbuch von podman run listet die Netzwerk-, Volume- und ID-Optionen auf. Beginnen Sie mit einem einfachen Image, einem lokalen Port und einem schreibgeschützten Volume. So werden Sie schnell wissen, ob Podman für Ihre Nutzung geeignet ist, bevor Sie einen nützlichen Dienst verschieben.