linux-rhel-centos-fedora container podman rhel ubi orchestration

Podman on RHEL: Native Container Runtime (Artikel 103)

Der definitive Guide zu Podman unter RHEL. Erfahren Sie alles über das Universal Base Image (UBI), die Verwaltung via Cockpit und die native Systemd-Integration.

# Podman on RHEL: Container im Red Hat Ökosystem

TL;DR / Management Summary In RHEL ist Podman nicht nur eine Alternative zu Docker, sondern die einzige offiziell unterstützte Container-Engine. Red Hat hat Docker aus den Repositories entfernt, um Platz für einen sichereren, Dämon-losen und Root-losen Ansatz zu machen. Das Herzstück der RHEL-Container-Strategie ist das UBI (Universal Base Image) – ein stabiles Image, das frei verteilt werden darf, aber vollen RHEL-Support genießt.


# 1. Einführung & Architektur

Kein Dämon, kein Risiko.

Podman in RHEL arbeitet eng mit dem Kernel (Namespaces/Cgroups v2) zusammen. Es gibt keinen zentralen Hintergrunddienst.

# Der RHEL Container Stack (Mermaid)

graph TD
    A[Admin / App] --> B[Podman CLI]
    B --> C[Kernel: Namespaces]
    B --> D[Kernel: Cgroups v2]
    B --> E[SELinux Policy: container_t]
    F[Images: Red Hat Ecosystem / UBI] --> B
    G[Registry: quay.io / registry.redhat.io] --> F

# 2. Universal Base Image (UBI): Das Fundament

Sicherheit vom Hersteller.

UBI ist ein abgespecktes RHEL, das Sie als Basis für Ihre Applikationen nutzen.

  • Vorteil: Sie erhalten Sicherheits-Updates von Red Hat, auch wenn Ihre Applikation auf einem Nicht-RHEL-Host (z.B. Kubernetes in der Cloud) läuft.

# UBI nutzen

# Ziehen des kleinsten Images
podman pull registry.access.redhat.com/ubi9/ubi-minimal

# Applikation bauen (Dockerfile)
# FROM registry.access.redhat.com/ubi9/ubi:latest
# RUN dnf install -y python3 ...

# 3. Cockpit Integration: GUI für Container

Management im Browser.

In RHEL können Sie Container grafisch verwalten, was ideal für Junior-Admins oder schnelles Monitoring ist.

sudo dnf install cockpit-podman
sudo systemctl enable --now cockpit.socket

Rufen Sie https://<ip>:9090 auf und navigieren Sie zu “Podman Container”. Hier können Sie Images suchen, Container starten und Ressourcen-Limits setzen.


# 4. Day-2 Operations: Systemd-Integration (Modern)

Auto-Start ohne Dämon.

Podman nutzt Systemd, um Container als echte Dienste zu verwalten. Ab RHEL 9 nutzen wir den “Quadlet” Mechanismus oder den klassischen Generator.

# Der klassische Generator

# 1. Container erstellen
podman run -d --name web01 nginx

# 2. Service-File generieren
podman generate systemd --name web01 --new --files

# 3. Aktivieren
mv container-web01.service ~/.config/systemd/user/
systemctl --user enable --now container-web01.service

# 5. Troubleshooting & “War Stories”

Wenn die Registry streikt.

# Story 1: “Der Registry-Login-Fail”

Symptom: podman pull von registry.redhat.io schlägt mit “Unauthorized” fehl. Ursache: Viele Red Hat Images sind nur für zahlende Kunden zugänglich. Lösung: Nutzen Sie Ihren Red Hat Account: podman login registry.redhat.io. Für freie Images nutzen Sie ubi-Präfixe.

# Story 2: “SELinux blockiert den Mount”

Symptom: Ein Container startet nicht, wenn ein Volume gemountet wird (Permission Denied). Ursache: Das Verzeichnis auf dem Host hat nicht das richtige Label für Container-Zugriffe. Lösung: Hängen Sie ein :Z (privat) oder :z (shared) an den Mount-Befehl an: podman run -v /data:/mnt:Z .... Podman korrigiert dann das SELinux-Label automatisch.


# 6. Fazit & Empfehlung

  • Migration: Ersetzen Sie Docker-Befehle durch Podman. Die Syntax ist identisch.
  • Sicherheit: Nutzen Sie Rootless Container für alle Web-Apps. Nur Infrastruktur-Dienste (wie Load Balancer auf Port 80) sollten als Root laufen.
  • Standard: Setzen Sie auf UBI als Basis für alle eigenen Images.

# Anhang: Cheatsheet

Aufgabe RHEL Befehl
Suche in RHEL Registry podman search registry.redhat.io/
Image Details sehen podman inspect <id>
Alle Ressourcen-Stats podman stats
Unbenutztes löschen podman system prune
Cockpit Plugin Install dnf install cockpit-podman
Log-Datei des Dämons Existiert nicht (Check journalctl)