Podman mit Python steuern – Container-Automatisierung für Einsteiger

Inhaltsverzeichnis

Container-Technologie gehört zum Standardwerkzeug von DevOps- und Linux-Engineers. Wer sich tiefer einarbeitet, stößt früher oder später auf Podman – eine moderne, daemonlose Alternative zu Docker. Doch wie lassen sich Container nicht nur manuell, sondern auch automatisiert mit Python verwalten? Genau das zeigt dieser Beitrag – verständlich erklärt für alle ohne Vorerfahrung mit Containern.

Was ist Podman überhaupt?

Podman ist ein Tool, mit dem du sogenannte OCI-Container starten, verwalten und löschen kannst. Ein Container ist dabei eine in sich geschlossene, leichtgewichtige Umgebung, in der Software läuft – ähnlich einer kleinen, isolierten Linux-Installation.

Normalerweise nutzt man Podman direkt in der Kommandozeile:

podman run ubuntu echo "Hallo Welt"

Doch sobald du mehr als nur gelegentlich einen Container starten willst – etwa für automatische Backups, Monitoring oder skalierbare Dienste – reicht das nicht mehr aus. Hier kommt Python ins Spiel.

Warum Python mit Podman kombinieren?

Mit der offiziellen Bibliothek python3-podman kannst du Podman über ein Python-Skript steuern. Das hat viele Vorteile gegenüber der direkten Nutzung der Kommandozeile:

  • automatisierbar und wiederverwendbar
  • strukturierter Zugriff über eine API statt Textauswertung
  • kompatibel mit Remote-Hosts via SSH

Statt also Container manuell zu starten, kannst du Regeln definieren: „Wenn die CPU-Auslastung über 80 % liegt, starte einen weiteren Webserver-Container.“

Technischer Hintergrund – kurz erklärt

Die Kommunikation zwischen Python und Podman erfolgt über ein sogenanntes Socket – das ist eine Art Kanal zwischen zwei Prozessen auf einem System. Podman stellt dabei einen Dienst bereit, auf den Python zugreift.

  1. Podman-Socket aktivieren:
    systemctl enable --now io.podman.socket
  2. Python-Bibliothek installieren:
    pip install podman
  3. Mit Podman in Python verbinden:
    with podman.Client() as client:

Danach kannst du Container starten, stoppen, inspizieren oder neue Images laden – direkt aus deinem Python-Code heraus.

Kurze Begriffsübersicht

BegriffErklärung
ImageVorlage für einen Container (z. B. Ubuntu oder nginx)
ContainerLaufende Instanz eines Images
RegistryOnline-Speicher für Images
SocketKommunikationsschnittstelle zwischen Programmen
APIProgrammierschnittstelle zur Steuerung von Programmen

Beispiel: Alle Container seit Mitternacht anzeigen

from datetime import datetime, time, timezone
import podman

midnight = datetime.combine(datetime.today(), time.min, tzinfo=timezone.utc)

with podman.Client() as client:
    for c in client.containers.list():
        created_at = podman.datetime_parse(c.createdat)
        if created_at > midnight:
            print(f"ID: {c.id[:12]}, Image: {c.image[:33]}, Created: {podman.datetime_format(created_at)}")

Dieses Skript zeigt alle Container, die seit Mitternacht erstellt wurden – inklusive ID, Image und Zeitstempel.

Container starten – ganz ohne Kommandozeile

with podman.Client() as client:
    ident = client.images.pull("ubuntu")
    image = client.images.get(ident)
    opts = {
        "memory": "512M",
        "memory-reservation": "256M",
    }
    container = image.container(**opts)
    print(f"Container-ID: {container.id}")

Du lädst ein Image, setzt Speicheroptionen und startest einen neuen Container – alles über Python.

Remote-Verbindung via SSH

Du kannst Container auch auf einem anderen Server steuern – mit nur wenigen Zeilen Code:

with podman.Client(
    uri="unix:/run/user/1000/podman/io.podman",
    remote_uri="ssh://andreas@mein-host.de/run/podman/io.podman"
) as client:
    print(client.system.info())

So kannst du ein Skript auf deinem Mac oder Windows-Rechner laufen lassen, das Container auf einem Linux-Host steuert.

Fazit

Die Kombination aus Podman und Python ist eine starke Lösung für alle, die Container systematisch einsetzen und automatisieren wollen. Sie bietet eine Brücke zwischen Linux-Tools und moderner Softwareentwicklung – ohne dass man tief in DevOps-Prozesse einsteigen muss. Ideal für Home-Labs, Testumgebungen oder erste Projekte im Bereich Infrastrukturautomatisierung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Andreas Moor
Andreas Moor
@blog@andreas-moor.de

Hallo Fediverse, ich bin Andy!

Hier und auf meiner Website findest du mein akkumuliertes Linux-Sysadmin-Wissen, meine kleinen und größeren Projekte und die Tools, die ich nutze.

Viel Spaß beim stöbern, lesen und lernen! 🧑‍💻

236 Beiträge
16 Folgende