30 Image-Verwaltung

Container-Images sind das Ausgangsmaterial eines modernen Software-Stacks. Jede Applikation, jeder Batch-Prozess, jedes Utility-Tool beginnt mit einem Image, das exakt definiert, was zur Laufzeit zur Verfügung steht und was nicht. Image-Verwaltung ist damit nicht nur Infrastrukturthema, sondern ein zentraler Baustein im Build- und Deploy-Prozess. Production-Grade bedeutet hier vor allem: reproduzierbar, auditierbar und kontrolliert.

30.1 Lokale Images im Spannungsfeld zwischen Build und Runtime

Podman speichert Images standardkonform nach OCI-Spezifikation und nutzt das lokale Storage Backend (containers/storage). Die technische Konsequenz: die CLI arbeitet konsistent unabhängig davon, ob ein Image aus einem Registry-Pull stammt oder aus einem Build-Prozess erzeugt wurde. Entwickler profitieren davon, dass auch experimentelle Zwischenstände isoliert, versionierbar und rückverfolgbar bleiben.

Ein Blick hinter die Kulissen zeigt, wie stark das Schichtenmodell (Layers) die tägliche Arbeit prägt. Jede Layer ist ein unveränderbarer Snapshot. Wird ein Image aktualisiert, entsteht eine neue Layer, die auf bestehenden Schichten aufsetzt. Der Effekt: Storage-Effizienz und deterministische Builds, aber auch die Notwendigkeit, die Größe und Struktur eines Images bewusst zu planen. Ein schlecht aufgebautes Image kann produktive Ressourcen genauso belasten wie ein falsch dimensionierter Container.

Die Image-Registry im lokalen System wächst schnell. Gerade in Multi-Projektumgebungen oder CI-ähnlichen Workflows entstehen Build-Artefakte, die nie zur Laufzeit gelangen, sich aber im Storage ansammeln. Das Problem: unnötige Gigabytes, oft an unerwarteter Stelle – nämlich im Home-Verzeichnis eines Entwicklers, wenn Podman rootless betrieben wird.

podman images liefert eine tabellarische Sicht, die häufig unterschätzt wird. Tags, Digests und REPOSITORY-Namen sind keine kosmetischen Attribute, sondern strukturieren den Lebenszyklus eines Images. Tags wie :dev, :staging oder :prod sind dabei bewusst technische Marker und keine Versionsverwaltung im klassischen Sinn. Wer das verwechselt, riskiert Inkonsistenzen: ein Tag kann jederzeit auf einen neuen Digest zeigen.

Eine ergänzende Sicht bietet podman image tree, das Schichtabhängigkeiten visualisiert. Sehr hilfreich, wenn ein Image „gefühlt zu groß“ ist und die Frage im Raum steht, ob man durch Reorganisation des Dockerfiles Speicher sparen kann oder ob eine externe Basis-Layer bereits ballastreich ist.

Diese Struktur hilft beim Verständnis: jede neue Layer multipliziert sich über sämtliche abgeleiteten Images.

30.3 Tags, Digests und das Prinzip der Unveränderlichkeit

Im produktionsnahen Umfeld ist ein zentrales Paradigma unverzichtbar: Tags sind volatil, Digests sind immutable. Ein :latest-Tag ist bequem, aber für Deployments riskant, da sich der zugrunde liegende Inhalt jederzeit ändern kann. Der Digest hingegen (ein SHA256-Wert) identifiziert ein Image eindeutig, vergleichbar mit einem Commit-Hash in Git. Wer reproduzierbare Deployments braucht, setzt konsequent auf Digests.

Ein häufiger Irrtum: das Entfernen eines Tags löscht das Image nicht. Der Digest bleibt weiterhin im Storage, solange er von einer anderen Referenz genutzt wird. Erst podman image rm entfernt ungenutzte Layer, wobei Podman durch Referenzzählung verhindert, dass Images gelöscht werden, die noch Container referenzieren.

30.4 Garbage Collection und Storage Hygiene

Build-intensive Projekte neigen dazu, lokale Images schnell anwachsen zu lassen. Podman stellt dafür zwei relevante Mechanismen bereit: podman image prune und podman system prune. Während der erste sich ausschließlich auf ungenutzte Images bezieht, entfernt der zweite auch Builder-Cache, stopped Containers, Netzwerkdefinitionen und unreferenzierte Layer.

Eine pragmatische Regel lautet: in aktiven Projekten nur selektiv prunen, aber nach Migrations-Zyklen, großen Refactorings oder Sandbox-Phasen konsequent aufräumen. Podman agiert dabei defensiv – keine Löschung erfolgt, wenn noch Container auf ein Image verweisen.

30.5 Multiplatform-Images und Manifeste

Gerade im Kontext von Edge-Deployments, ARM-basierten Laptops oder hybriden Build-Pipelines spielt die Architektur eines Images eine entscheidende Rolle. Ein x86-Image läuft auf einem ARM-Mac schlicht nicht, und emulierte Ausführungen (via qemu) sind im produktiven Umfeld selten eine Option.

Podman erlaubt über podman manifest das Erstellen und Verwalten sogenannter Manifest-Listen – Sammlungen architekturspezifischer Images, die unter einer einzigen Referenz in einer Registry veröffentlicht werden. Das ermöglicht echte Multiplatform-Images.

Technisch betrachtet beschreibt ein Manifest eine Liste von Image-Digests, ergänzt um Architekturen, OS-Informationen und optionale Feature-Eigenschaften. Der Abruf via podman pull wählt dann automatisch die passende Variante aus.

Diese Flexibilität ist insbesondere für Projekte relevant, die sowohl in lokalen Dev-Umgebungen als auch im Kubernetes-Cluster laufen.

30.6 Signaturen, Policies und vertrauenswürdige Registries

Image Security spielt eine zunehmende Rolle in Lieferketten. Podman integriert sich in den OCI-Standard und unterstützt Signaturen via sigstore oder notary v2 (je nach Setup). Das policy.json-File steuert, ob Images nur aus vertrauenswürdigen Quellen gezogen werden dürfen, ob Signaturen verpflichtend sind oder ob lokale Images auch in restriktiven Szenarien zugelassen werden.

Praktischer Hinweis aus realen Projekten: Sicherheitsrichtlinien auf Registry-Ebene müssen früh in der Architektur berücksichtigt werden. Die Einführung von Signaturen nachträglich führt oft zu Pipeline-Brüchen, insbesondere wenn Build-Systeme auf flüchtige Tags oder ungesicherte Testregistries zugreifen.

30.7 Images als Teil der Deployment-Architektur

In modernen CI/CD-Systemen ist ein Image nicht nur ein Build-Artefakt, sondern die Auslieferungseinheit selbst. Konfigurationen erfolgen während der Container-Runtime, aber das eigentliche Systemabbild muss vollständig sein: Runtime, Libraries, Tools, Entry Points und debugging-relevante Informationen. Für Architekturen, in denen Teams Builds und Deployments trennen, ist dieser Punkt besonders kritisch: das Image ist der Vertrag.

Aus dieser Perspektive ist Image-Verwaltung ein strategisches Thema: wer konsistent baut, klar versioniert, regelmäßige Hygiene betreibt und Security-Mechanismen ernst nimmt, erhält stabile Deployments und vermeidet spätere Überraschungen.