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.
- Podman-Socket aktivieren:
systemctl enable --now io.podman.socket - Python-Bibliothek installieren:
pip install podman - 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
| Begriff | Erklärung |
|---|---|
| Image | Vorlage für einen Container (z. B. Ubuntu oder nginx) |
| Container | Laufende Instanz eines Images |
| Registry | Online-Speicher für Images |
| Socket | Kommunikationsschnittstelle zwischen Programmen |
| API | Programmierschnittstelle 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