Podman auf Ubuntu: Moderne Container-Verwaltung mit Dockerfile – Installation, Anwendung & Migration

目次

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:

DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman 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.

Weiterführende Links