Podman – Rootless Docker-Alternative Grundlagen und Installation | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

Podman Docker Alternative Grundlagen

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

Podman – Rootless Docker-Alternative Grundlagen und Installation

Was ist Podman?

Podman (Pod Manager) ist eine Container-Verwaltungsplattform, die eine komplette Alternative zu Docker darstellt. Im Gegensatz zu Docker ist Podman eine daemonless Architektur – es gibt keinen zentralen Daemon-Prozess, der mit Root-Rechten läuft. Jeder Benutzer kann seine eigenen Container ohne sudo verwalten. Podman ist vollständig OCI-kompatibel (Open Container Initiative) und kann daher dasselbe Image-Format wie Docker verwenden.

💡 Tipp: Podman wurde von Red Hat entwickelt und ist der Standard-Container-Runtime in RHEL und Fedora. Es ist mit der Docker CLI zu 99% kompatibel, was eine einfache Migration ermöglicht.

Hauptunterschiede zwischen Docker und Podman

Merkmal Docker Podman
Architektur Client-Server mit Docker Daemon Daemonless (direkte Kommunikation mit Container-Runtime)
Rootless Standard Nein, Docker Daemon läuft als root Ja, Container als normaler Benutzer
Security-Modell User in docker-Gruppe benötigt Elevated Privileges Keine Privilege Escalation nötig
Pods-Konzept Docker Compose für Multi-Container Orchestrierung Native Pod-Unterstützung (wie Kubernetes)
Systemd Integration Manuelle Erstellung von Systemd Units Automatische Generierung von Units
Performance Gut, aber durch Daemon-Overhead Minimal, direkter Prozesszugriff
Networking Docker Network Command Podman Network, bessere Integration
Image Storage Docker Desktop/Engine spezifisches Format OCI Image Format kompatibel
⚠️ Wichtig: Docker als root auszuführen ist ein Sicherheitsrisiko. Mit Podman wird Rootless zum Standard und es ist nicht erforderlich, Benutzer zur docker-Gruppe hinzuzufügen.

Installation auf Ubuntu

Option 1: Aus Standard-Repository

Die einfachste Methode ist die Installation aus dem Standard Ubuntu Repository:

# Paketlisten aktualisieren
sudo apt update

# Podman installieren
sudo apt install podman podman-compose -y

# Version überprüfen
podman --version

# Systemd Services für Podman aktivieren
systemctl --user start podman
systemctl --user enable podman

Option 2: Aus dem Official Podman Repository (neueste Version)

Für eine neuere Version als im Standard Repository verfügbar:

# Podman Repository hinzufügen
. /etc/os-release
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

# GPG Key importieren
curl -fsSL https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/Release.key | sudo apt-key add -

# Repository aktualisieren
sudo apt update

# Podman installieren
sudo apt install podman -y

# Überprüfung
podman --version

Rootless Container – Der Hauptvorteil

Einer der größten Vorteile von Podman ist die Möglichkeit, Container als normaler Benutzer ohne sudo-Rechte zu starten. Dies eliminiert ein großes Sicherheitsrisiko, das mit der Verwendung von Docker besteht.

Rootless Container starten

# Als normaler Benutzer (ohne sudo!) Container starten
podman run -d --name mywebserver -p 8080:80 nginx

# Container-Status überprüfen
podman ps

# Container-Logs ansehen
podman logs mywebserver

# Container stoppen
podman stop mywebserver

# Container löschen
podman rm mywebserver

# Alle User-Container auflisten
podman ps -a
✅ Gut zu wissen: User-Namespace-Mapping ist automatisch konfiguriert. Prozesse im Container laufen unter dem User-Namespace des Benutzers, nicht als root auf dem Host.

Grundlegende Podman Befehle

Image-Management

# Images durchsuchen
podman search nginx

# Image herunterladen/pullen
podman pull docker.io/library/nginx:latest

# Lokale Images auflisten
podman images

# Image inspizieren
podman inspect docker.io/library/nginx:latest

# Image löschen
podman rmi docker.io/library/nginx:latest

# Image mit Tag erstellen
podman tag docker.io/library/nginx:latest myrepo/nginx:v1.0

Container-Management

# Interaktiver Container
podman run -it ubuntu:22.04 /bin/bash

# Container mit Port-Mapping
podman run -d -p 80:80 --name web nginx

# Container mit Volume
podman run -d -v /local/path:/container/path nginx

# Container mit Umgebungsvariablen
podman run -e DATABASE_URL=postgres://localhost -d nginx

# Container mit Ressourcen-Limits
podman run -d --memory 512m --cpus 1 --name limited nginx

# Container starten/stoppen/neustarten
podman start mycontainer
podman stop mycontainer
podman restart mycontainer

# Container-Informationen
podman ps
podman inspect mycontainer
podman stats mycontainer

Befehle in laufenden Containern ausführen

# Shell im laufenden Container öffnen
podman exec -it mycontainer /bin/bash

# Befehl im Container ausführen
podman exec mycontainer apt update

# Dateien kopieren
podman cp mycontainer:/app/data /local/path
podman cp /local/file mycontainer:/app/

Podman Pods

Ein Pod ist ein Konzept, das von Kubernetes bekannt ist und von Podman nativ unterstützt wird. Ein Pod ist eine Gruppe von Containern, die zusammen arbeiten und Netzwerk-Ressourcen teilen, ähnlich wie in Kubernetes.

# Pod erstellen
podman pod create --name mypod -p 8080:80

# Container in Pod starten
podman run -d --pod mypod --name web nginx
podman run -d --pod mypod --name db postgres:latest

# Pod-Status überprüfen
podman pod ps

# Pod inspizieren
podman pod inspect mypod

# Alle Container in einem Pod überprüfen
podman ps --pod

# Pod stoppen
podman pod stop mypod

# Pod löschen (und alle darin enthaltenen Container)
podman pod rm mypod
💡 Tipp: Pods sind perfekt für Multi-Container-Anwendungen, bei denen Sidecar-Container (z.B. Logging, Monitoring) benötigt werden. Sie teilen den gleichen Netzwerk-Namespace und können leicht kommunizieren.

Systemd Service aus Container generieren

Podman kann automatisch Systemd Service-Dateien aus laufenden Containern generieren. Dies ist sehr praktisch für die Verwaltung von Containern als Systemd Services.

# Container starten
podman run -d --name myservice nginx:latest

# Systemd Service generieren
podman generate systemd --new --name myservice > /tmp/myservice.service

# Service-Datei überprüfen
cat /tmp/myservice.service

# Service-Datei in Systemd-Verzeichnis kopieren
mkdir -p ~/.config/systemd/user
cp /tmp/myservice.service ~/.config/systemd/user/myservice.service

# Systemd-Cache aktualisieren
systemctl --user daemon-reload

# Service starten
systemctl --user start myservice

# Service aktivieren (beim Booten starten)
systemctl --user enable myservice

# Status überprüfen
systemctl --user status myservice

# Service stoppen
systemctl --user stop myservice

Podman Compose

Podman Compose ist ein Tool zur Verwaltung von Multi-Container-Anwendungen mit YAML-Definitionen, ähnlich wie Docker Compose. Die Syntax ist identisch, aber Podman Compose nutzt Podman statt Docker.

Installation

# Podman Compose installieren
pip3 install podman-compose

# Version überprüfen
podman-compose --version

Docker Compose Datei mit Podman verwenden

# docker-compose.yml
version: '3'
services:
  web:
    image: nginx:latest
    container_name: web
    ports:
      - "80:80"
    volumes:
      - ./www:/usr/share/nginx/html
    networks:
      - mynetwork

  database:
    image: postgres:15
    container_name: db
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secure123
      POSTGRES_DB: myapp
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - mynetwork

networks:
  mynetwork:
    driver: bridge

volumes:
  db_data:

Mit Podman Compose verwalten

# Alle Services starten
podman-compose -f docker-compose.yml up -d

# Services überprüfen
podman-compose -f docker-compose.yml ps

# Logs anzeigen
podman-compose -f docker-compose.yml logs -f web

# Spezifischen Service neustarten
podman-compose -f docker-compose.yml restart web

# Services stoppen
podman-compose -f docker-compose.yml down

# Volumes löschen (mit down)
podman-compose -f docker-compose.yml down -v

Migration von Docker zu Podman

Schnelle Kompatibilität mit Alias

# Docker-Alias für Podman erstellen
echo "alias docker=podman" >> ~/.bashrc
source ~/.bashrc

# Nun funktionieren Docker-Befehle direkt mit Podman
docker run -d nginx
docker ps
docker stop mycontainer

Images von Docker zu Podman migrieren

# Docker-Daemon muss nicht laufen!
# Aber Docker CLI muss installiert sein

# Docker Image als Tarball exportieren
docker save myimage:latest -o myimage.tar

# In Podman importieren
podman load -i myimage.tar

# Oder direkt von Docker Registry in Podman pullen
podman pull docker.io/myusername/myimage:latest
⚠️ Wichtig: Podman speichert Images standardmäßig unter ~/.local/share/containers/storage. Docker speichert sie in /var/lib/docker. Sie müssen nicht migriert werden – Podman kann beide formate lesen.

Buildah für Container-Images erstellen

Buildah ist ein spezialisiertes Werkzeug zum Erstellen von OCI-konformen Container-Images. Es funktioniert perfekt mit Podman und bietet mehr Kontrolle als dockerfile-basierte Builds.

# Buildah installieren
sudo apt install buildah -y

# Neuen Container-Build-Kontext erstellen
buildah from alpine:latest

# Befehle im Build-Kontext ausführen
buildah run alpine:latest apk add nginx

# Datei in Build-Kontext kopieren
buildah copy alpine:latest app.conf /etc/nginx/conf.d/

# Umgebungsvariable setzen
buildah config --env "APP_ENV=production" alpine:latest

# Port exponieren
buildah config --expose 80 alpine:latest

# Image committen
buildah commit alpine:latest mynginx:v1

# Mit Podman verwenden
podman run -d -p 80:80 mynginx:v1

Skopeo für Image-Management

Skopeo ist ein Werkzeug zur Inspizierung, Kopierung und Verwaltung von Container-Images, ohne einen Daemon zu benötigen.

# Skopeo installieren
sudo apt install skopeo -y

# Image-Informationen inspizieren (direkt vom Registry)
skopeo inspect docker://docker.io/library/nginx:latest

# Image zwischen Registries kopieren
skopeo copy docker://docker.io/library/nginx:latest docker://myregistry.com/nginx:latest

# Image-Konfiguration anzeigen
skopeo inspect --config docker://docker.io/library/nginx:latest

# Image lokales Podman-System kopieren
skopeo copy docker://docker.io/library/nginx:latest containers-storage:localhost/nginx:latest

Vergleich: Docker vs Podman vs containerd

Aspekt Docker Podman containerd
Architektur Daemon-basiert Daemonless Daemon-basiert (minimal)
Rootless Mit Konfiguration Standard Mit Konfiguration
CLI Benutzerfreundlichkeit Sehr gut Sehr gut (Docker-kompatibel) Niedrig (ctr, nerdctl)
Pods-Unterstützung Nein (nur Compose) Ja (native) Nein
Kubernetes Integration Docker-Shim in K8s CRI-O ähnlich Direkte CRI-Integration
Systemd-Integrationx Manuell Automatisch generiert Minimal
Lernkurve Mittelmäßig Sehr gering (Docker-kompatibel) Steil
Für Production Ready Ja Ja (Red Hat Standard) Ja (Kubernetes Standard)

Best Practices mit Podman

Systemd Services für permanente Container

# Permanenter Service-Unit (nicht temporary)
podman generate systemd --new --name myservice --after network-online.target > ~/.config/systemd/user/myservice.service

# Der Service wird auch nach Neustart des Systems weiterlaufen
systemctl --user enable myservice

# Login-Session muss nicht aktiv sein
loginctl enable-linger $USER

Netzwerk-Konfiguration

# Custom Netzwerk erstellen
podman network create mynet

# Mit Netzwerk und Hostname starten
podman run -d --network mynet --hostname webserver nginx

# DNS-Auflösung wird unterstützt
podman exec -it webserver ping webserver

# Netzwerk inspizieren
podman network inspect mynet

# Netzwerk löschen
podman network rm mynet

Weitere Ressourcen


Letzte Aktualisierung: April 2026 | Podman Version 5.0+

Weitere Ressourcen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120