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

330 Dokumentationen verfügbar

Wissensdatenbank

Podman Docker Alternative Grundlagen

Zuletzt aktualisiert: 14.07.2026 um 12:29 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+

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120