- 1 1. Einführung
- 2 2. Was ist Podman?
- 3 3. Podman auf Ubuntu installieren
- 4 4. Grundlagen zum Dockerfile und Einsatz mit Podman
- 5 5. Praxis: Container mit Ubuntu-Base erstellen
- 6 6. Nützliche Funktionen und Tipps zu Podman
- 7 7. Migrationsleitfaden: Von Docker zu Podman
- 8 8. Häufig gestellte Fragen (FAQ)
- 8.1 Q1. Was sind die Hauptunterschiede zwischen Podman und Docker?
- 8.2 Q2. Worin unterscheiden sich Dockerfile und Containerfile?
- 8.3 Q3. Kann man Docker Compose mit Podman nutzen?
- 8.4 Q4. Läuft Podman stabil auf Ubuntu?
- 8.5 Q5. Gibt es Einschränkungen im rootlosen Modus?
- 8.6 Q6. Kann Podman Images wie bei Docker Hub pullen?
- 8.7 Q7. Ist Podman für den Produktivbetrieb geeignet?
- 9 Weiterführende Links
1. Einführung
Die Entwicklung und das gestiegene Interesse an Container-Technologien
In den letzten Jahren gewinnt die Container-Technologie in der Anwendungsentwicklung und im Betrieb zunehmend an Bedeutung. Besonders die Möglichkeit, Entwicklungs- und Produktionsumgebungen anzugleichen und dadurch eine hohe Reproduzierbarkeit sicherzustellen, überzeugt viele IT-Profis.
Ein bekanntes Beispiel ist Docker. Doch in jüngster Zeit rückt Podman als moderne Alternative in den Fokus. Podman bietet eine nahezu identische CLI (Command Line Interface) wie Docker, ist jedoch daemonlos und ressourcenschonend sowie ohne Root-Rechte (rootless) nutzbar.
Warum „Podman + Dockerfile + Ubuntu“?
In diesem Beitrag zeigen wir, wie sich die drei Komponenten Podman, Dockerfile und Ubuntu ideal für einen modernen Container-Workflow unter Linux kombinieren lassen.
- Ubuntu ist eine der beliebtesten Linux-Distributionen und eignet sich sowohl für Einsteiger als auch für Profis,
- das Dockerfile fungiert als „Bauplan“ für Container-Images,
- und Podman ist ein Next-Gen-Tool für eine noch flexiblere und sicherere Container-Verwaltung.
Gerade mit gestiegenen Sicherheitsanforderungen setzen sowohl Entwickler als auch Unternehmen verstärkt auf die Kombination Podman auf Ubuntu unter Verwendung von Dockerfiles.
Zielgruppe und Zweck dieses Artikels
Ziel dieses Artikels ist es, Schritt für Schritt zu erklären, wie Sie auf einer Ubuntu-Umgebung mit Podman ein Dockerfile bauen und produktiv nutzbare Container erstellen.
Gedacht ist dieser Beitrag insbesondere für:
- Leser mit Docker-Erfahrung, die an Podman interessiert sind
- Ubuntu-Nutzer, die Container in einer sicheren Umgebung betreiben möchten
- IT-Profis, die Container-Technologien beruflich einsetzen wollen
- Einsteiger, die eigene Dockerfiles schreiben und mit Podman bauen möchten
Der Beitrag deckt sowohl die Grundlagen und Tipps zur Fehlervermeidung als auch die Unterschiede und Migrationspfade zwischen Docker und Podman ab.
2. Was ist Podman?
Grundlagen zu Podman
Podman (Pod Manager) ist ein Open-Source-Container-Tool, das von der Community rund um Red Hat entwickelt wird. Wie Docker unterstützt es das Erstellen, Ausführen und Verwalten von OCI-kompatiblen Containern, unterscheidet sich aber in Philosophie und Architektur wesentlich.
Das wichtigste Merkmal: Podman benötigt keinen Daemon. Dadurch sind ressourcenschonender und sicherer Betrieb möglich. Zudem unterstützt Podman den rootlosen Betrieb, sodass auch Nicht-Administratoren Container steuern können. Die CLI ist nahezu zu Docker kompatibel.
Die wichtigsten Vorteile von Podman
Hier einige der herausragenden Eigenschaften von Podman:
Daemonloses Design
Podman kommt ohne dauerhaften Hintergrundprozess aus. Dadurch laufen keine unnötigen Dienste, was Ressourcen spart und die Sicherheit erhöht.
Rootless (Betrieb als Nicht-Administrator)
Mit Podman können normale Nutzer Container starten und verwalten. Das ist besonders für Multi-User- oder Serverumgebungen sicher und verringert Risiken erheblich.
Docker-kompatible CLI
Podman nutzt nahezu dieselben Befehle wie Docker. Zum Beispiel funktionieren die folgenden Docker-Kommandos auch mit Podman:
podman build -t myimage .
podman run -it myimage bash
Wer Docker kennt, wird sich sofort zurechtfinden.
Pod-Feature
Podman übernimmt das Pod-Konzept aus Kubernetes: Mehrere Container können als logische Einheit verwaltet werden. Dadurch wird die Integration mit Kubernetes und der Umstieg auf Cloud-Infrastrukturen erleichtert.
Kompatibilität mit Ubuntu
Podman ist nicht nur für Fedora- und RHEL-basierte Systeme, sondern läuft auch unter Ubuntu stabil. Die Installation ist direkt aus den offiziellen Repositories möglich und besonders ab Ubuntu 20.04 LTS unkompliziert.
3. Podman auf Ubuntu installieren
Vorbereitungen und Voraussetzungen
Vor der Installation von Podman prüfen Sie die Ubuntu-Version. Empfohlen ist Ubuntu 20.04 LTS oder neuer, ältere Versionen enthalten Podman oft nicht im Standard-Repository.
Mit diesem Befehl ermitteln Sie Ihre Ubuntu-Version:
lsb_release -a
Für die Installation von Podman benötigen Sie sudo
-Rechte. Auch wenn Sie später rootless arbeiten möchten, ist die Installation als Admin notwendig.
Installation aus dem offiziellen Ubuntu-Repository
Auf Ubuntu 20.04, 22.04 und neuer installieren Sie Podman ganz einfach mit:
sudo apt update
sudo apt install -y podman
Nach Abschluss prüfen Sie die Version mit:
podman --version
Für die neueste Version: Offizielles PPA nutzen
Das im Ubuntu-Repository verfügbare Podman ist oft etwas älter. Wenn Sie die neuesten Features möchten, nutzen Sie das offizielle PPA:
. /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
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman
Damit stehen Ihnen die neuesten Podman-Versionen ähnlich wie auf Red Hat/Fedora-Systemen zur Verfügung.
Grundlegender Funktionstest
Nach der Installation testen Sie Podman mit:
podman info
Hiermit prüfen Sie Version, Konfiguration und Features (z.B. rootless-Modus).
Testen Sie außerdem, ob ein Alpine-Container funktioniert:
podman run --rm -it alpine sh
Wenn die Shell startet, läuft Podman korrekt.
4. Grundlagen zum Dockerfile und Einsatz mit Podman
Was ist ein Dockerfile?
Ein Dockerfile ist ein Text-Blueprint für die Erstellung von Container-Images: Basis-Image, zu installierende Pakete, kopierte Dateien und auszuführende Befehle werden dort als Anweisungen definiert.
Tools wie Podman oder Docker bauen daraus automatisiert einheitliche Umgebungen.
Beispiel für ein Dockerfile:
FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]
So wird eine Ubuntu-Basis genutzt, Pakete installiert, ein Script eingebunden und als Startpunkt festgelegt.
Wie nutze ich ein Dockerfile mit Podman?
Mit Podman bauen Sie Images aus Dockerfiles praktisch wie mit Docker.
1. Projektstruktur anlegen
Die Struktur sieht beispielsweise so aus:
project/
├── Dockerfile
└── app.sh
app.sh
kann ein einfaches Script sein:
#!/bin/bash
echo "Hello from Podman container!"
Script ausführbar machen:
chmod +x app.sh
2. Build mit Podman
Im Projektverzeichnis führen Sie aus:
podman build -t mypodmanapp .
Dadurch entsteht ein neues Image mypodmanapp
.
3. Images anzeigen
podman images
4. Container starten
podman run --rm mypodmanapp
Das Script gibt Hello from Podman container!
aus.
Containerfile vs. Dockerfile
Manchmal wird bei Podman das identische Format als Containerfile bezeichnet – neutraler, da nicht „Docker“-gebunden. Es gibt keinen funktionalen Unterschied. Podman akzeptiert beide Namen, z.B.:
podman build -f Containerfile -t myimage .
5. Praxis: Container mit Ubuntu-Base erstellen
Ein Dockerfile auf Ubuntu-Basis schreiben
Nun eine Schritt-für-Schritt-Anleitung zum Erstellen eines Ubuntu-basierten Dockerfiles und dem Build mit Podman:
FROM ubuntu:22.04
RUN apt update && apt install -y curl && apt clean
COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh
CMD ["/usr/local/bin/hello.sh"]
Dieses Dockerfile macht Folgendes:
- Verwendet das offizielle Ubuntu 22.04-Image
- Installiert das Paket
curl
- Kopiert das lokale
hello.sh
-Script in den Container - Setzt
hello.sh
als Standard-Startscript
Auch hello.sh
muss angelegt werden:
#!/bin/bash
echo "Hallo aus dem Podman-Container!"
Script ausführbar machen:
chmod +x hello.sh
Image-Build mit Podman
Build im Verzeichnis:
podman build -t ubuntu-hello .
-t ubuntu-hello
vergibt einen Tag für das Image.
podman images
Listet alle Images auf.
Container starten und testen
podman run --rm ubuntu-hello
Ausgabe-Beispiel:
Hallo aus dem Podman-Container!
--rm
entfernt den Container nach dem Beenden automatisch.
Interaktive Container-Sitzung
podman run -it ubuntu-hello bash
Damit starten Sie eine Bash im Container für interaktives Arbeiten.
6. Nützliche Funktionen und Tipps zu Podman
Stärken: Flexibilität & Sicherheit
Podman ist mit Docker kompatibel, bietet aber noch mehr Flexibilität und Sicherheit. Hier einige praktische Funktionen und Tipps für den täglichen Einsatz.
Sicherer Betrieb im Rootless-Modus
Ein Hauptvorteil ist der rootlose Modus: Normale Nutzer können Container starten und verwalten – ganz ohne Admin-Rechte:
podman run -it ubuntu bash
Die Auswirkungen auf das System bleiben dadurch gering, ideal für geteilte oder Entwicklungs-Umgebungen.
Automatischer Start per systemd
Podman kann nativ mit systemd integriert werden, sodass Container als Linux-Service automatisch starten:
podman generate systemd --name mycontainer --files --restart-policy=always
Erzeugte Service-Units aktivieren Sie z.B. so:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
Damit laufen Container auch nach einem Serverneustart automatisch weiter.
Multi-Container-Setup mit podman-compose
Für mehrere Container wie bei Docker Compose nutzen Sie podman-compose. Installation via pip:
pip install podman-compose
Kompatibel mit bestehenden docker-compose.yml
-Files:
podman-compose up -d
Weitere nützliche Befehle und Tipps
Unnötige Images & Container aufräumen
podman system prune -a
Beseitigt nicht mehr benötigte Images und Container, um Speicherplatz zu sparen.
Shell-Completion für Bash/Zsh
sudo apt install podman-docker
Damit funktioniert Tab-Completion wie bei Docker.
7. Migrationsleitfaden: Von Docker zu Podman
Warum wechseln viele von Docker zu Podman?
Docker war lange der Standard für Container-Technologien. Doch inzwischen wechseln immer mehr Unternehmen auf Podman, das leichter und sicherer ist. In RHEL- und Fedora-Umgebungen ist Podman inzwischen Standard.
Hier zeigen wir die wichtigsten Schritte und Hinweise für einen reibungslosen Umstieg.
Befehlskompatibilität Docker vs. Podman
Da Podman eine sehr hohe Kompatibilität zur Docker-CLI hat, können viele Befehle direkt ersetzt werden:
Docker | Podman |
---|---|
docker build -t myapp . | podman build -t myapp . |
docker run -it myapp | podman run -it myapp |
docker images | podman images |
docker ps | podman ps |
Ein Umstieg gelingt somit ohne große Umgewöhnung.
podman-docker für vollständige Kompatibilität
Für bestehende Skripte oder CI/CD-Pipelines mit „docker“-Befehlen kann das Paket podman-docker
installiert werden:
sudo apt install podman-docker
Damit ist docker
ein Symlink auf Podman:
which docker
# → /usr/bin/docker → podman (Symlink)
Sie können bestehende Docker-Skripte ohne Anpassung weiterverwenden.
docker-compose-Alternative: podman-compose
Für Multi-Container-Projekte nutzen Sie podman-compose
. Es ist zu docker-compose.yml
weitgehend kompatibel. Beachten Sie aber:
- Einige Optionen wie
depends_on
werden nicht vollständig unterstützt - Event-Logs und Health-Checks können abweichen
Standard-Setups (Web + DB) lassen sich aber meist problemlos migrieren.
Images und Volumes übertragen
Lokale Docker-Images sind in Podman nicht direkt verfügbar. Sie können Images erneut laden oder exportieren/importieren:
Option 1: Erneutes Pull mit Podman
podman pull ubuntu:22.04
Option 2: Exportieren aus Docker & Import nach Podman
# Exportieren mit Docker
docker save myimage > myimage.tar
# Import mit Podman
podman load < myimage.tar
So können Sie selbst erstellte Images weiterverwenden.
Weitere Hinweise
- Rootless-Unterstützung: Docker benötigt meist Root, Podman läuft nativ rootlos
- Daemon-Struktur: Podman arbeitet daemonlos, Verwaltung im Hintergrund unterscheidet sich
- Log- und Datenpfade: Können unterschiedlich sein, prüfen Sie ggf. Konfigurationen
8. Häufig gestellte Fragen (FAQ)
Q1. Was sind die Hauptunterschiede zwischen Podman und Docker?
A1. Der größte Unterschied: Podman arbeitet daemonlos (kein dauerhafter Hintergrundprozess). Das ermöglicht einen ressourcensparenden und sicheren Betrieb. Zudem kann Podman rootless genutzt werden, die CLI ist weitgehend kompatibel.
Q2. Worin unterscheiden sich Dockerfile und Containerfile?
A2. Es gibt keinerlei funktionale Unterschiede. Beide sind Build-Anweisungen für Container. In der OCI-Welt wird oft Containerfile als neutraler Name genutzt – das Handling bleibt identisch.
Q3. Kann man Docker Compose mit Podman nutzen?
A3. Direkt nicht, aber mit podman-compose
steht ein kompatibles Python-Tool zur Verfügung, das docker-compose.yml
interpretiert.
Einige Optionen wie depends_on
sind eingeschränkt, bei komplexen Setups empfiehlt sich ein Testlauf.
Q4. Läuft Podman stabil auf Ubuntu?
A4. Ja, ab Ubuntu 20.04 LTS läuft Podman stabil und ist einfach über apt
installierbar. Für aktuellere Versionen steht das PPA zur Verfügung.
Q5. Gibt es Einschränkungen im rootlosen Modus?
A5. Einige privilegierte Operationen oder das Binden an Ports unter 1024 sind nicht möglich. Mit Port-Forwarding können Sie das jedoch meist umgehen.
Q6. Kann Podman Images wie bei Docker Hub pullen?
A6. Ja, Podman unterstützt per Default Docker Hub sowie weitere Repositories wie Quay.io oder GitHub Container Registry. Gegebenenfalls muss der vollständige Registry-Name angegeben werden:
podman pull docker.io/library/ubuntu
Q7. Ist Podman für den Produktivbetrieb geeignet?
A7. Ja, Podman unterstützt Kubernetes-Pods, systemd-Integration und ist gerade für sicherheitskritische Umgebungen bestens geeignet. In RHEL und Fedora ist Podman der Standard.