31 Image Pull/Push

Der Transfer von Images zwischen lokalem Storage und entfernten Registries ist ein unscheinbarer, aber hochsensibler Teil moderner Container-Workflows. Pull und Push bestimmen nicht nur die Performance und Zuverlässigkeit von Build- und Deployment-Pipelines, sondern auch die Sicherheit der gesamten Lieferkette. Ein sauber aufgebauter Registry-Workflow entscheidet darüber, ob ein System reproduzierbar ausgeliefert werden kann oder ob sich Fehlerbilder unkontrolliert in der Infrastruktur verteilen.

31.1 Die Rolle der Registry als Single Source of Truth

Eine Registry ist in produktionsnahen Architekturen kein File-Server, sondern ein vertrauenswürdiger Verteilpunkt. Das klingt trivial, ist aber in der Praxis der zentrale Dreh: Teams entwickeln, bauen und signieren Images lokal, doch erst durch das Pushen in eine Registry entsteht ein gemeinsamer Zustand, auf den Deployments in Staging- oder Produktionssystemen zugreifen können.

Podman hält sich strikt an die OCI-Standards für das Interagieren mit Registries. Das bedeutet: Digest-basierte Identifikation, Manifest-Verwaltung, Layer-Deduplication und Transport über HTTPS (bzw. gesicherte Alternativen wie MTLS bei Private Registries).

31.2 Image Pull: kontrolliertes Herunterladen statt blindes Vertrauen

Ein Pull-Vorgang wirkt zunächst banal. Doch technisch gesehen passiert ein mehrstufiger Prozess: Auflösen des Repositories, Abfragen des Manifests, Ermitteln passender Architekturen und anschließendes selektives Herunterladen der benötigten Layer. Podman zieht dabei nur diejenigen Layer, die lokal noch nicht vorhanden sind. Dadurch entstehen oft beeindruckend schnelle Pulls – solange eine Basis-Layer bereits auf dem System existiert.

Ein Schutzmechanismus: registries.conf steuert, welche Registries überhaupt konsultiert werden dürfen. In sicherheitskritischen Umgebungen wird hier strikt definiert, welche Quellen zulässig sind und welche nur über Signaturprüfung akzeptiert werden. Wer das ignoriert, läuft Gefahr, dass podman pull nginx ungewollt aus Docker Hub statt aus einer internen Registry erfolgt.

Ein praktischer Hinweis aus realen Architekturen: Teams sollten einheitliche Image-Shortnames vermeiden. Der Befehl podman pull nginx ist verführerisch kurz, aber ambivalent. Die explizite Variante podman pull registry.example.com/base/nginx:1.25 ist ungleich deutlicher und bewahrt vor Umgebungsabhängigkeiten.

31.3 Image Push: das Schreiben in die Lieferkette

Ein Push ist mehr als das Hochladen eines Archivs. Registries erwarten strukturierte Manifest-Objekte, dedizierte Layer-Blobs und eindeutige Referenzen. Podman führt dies deterministisch aus: für jede Layer wird geprüft, ob sie im Ziel bereits existiert. Gerade in Multi-Projektumgebungen spart das erhebliche Bandbreite.

Der Vorgang folgt streng dem Prinzip der referenzierten Unveränderlichkeit: Layer, die bereits in der Registry existieren, werden nicht erneut übertragen. Dieser Mechanismus reduziert sowohl Netzwerklast als auch Speicherverbrauch und ermöglicht effiziente DevOps-Pipelines.

Ein häufiger Stolperstein sind Berechtigungen. Push-Vorgänge scheitern meist nicht an Netzwerkproblemen, sondern an fehlenden Credentials oder falsch konfigurierten Token-Rechten. Die Standardsituation: ein Developer-Token darf lesen, aber nicht schreiben – ideal für Pulls, fatal für CI-Pipelines. Deshalb sollte jedes Team Zugriffsrechte so definieren, dass CI/CD-Systeme schreiben dürfen, lokale Developer aber im Zweifel nur lesend zugreifen.

31.4 Authentifizierung und Credential-Management

Podman nutzt eine Credential-Store-Architektur, die systemweit oder userbasiert konfiguriert werden kann. Rootless-Umgebungen speichern Credentials isoliert pro Benutzer, was sicherheitstechnisch vorteilhaft ist. Unterstützte Backends reichen von einfachen Keyring-Stores bis hin zu vollständig verschlüsselten Secret-Managern.

Ein Aspekt am Rande, der sich im Alltag als kritisch herausstellt: CI-Systeme, die automatisiert pushen, sollten niemals mit Personal Tokens arbeiten. Stattdessen sind fein granulierte Deploy Tokens oder kurzlebige Access Tokens vorzuziehen, um die Angriffsfläche zu minimieren.

31.5 Umgang mit Unsigned Images und Signature Policies

In sicherheitsorientierten Umgebungen werden Pulls unsignierter Images bewusst unterbunden. Das policy.json-System erlaubt es, Regeln festzulegen, welche Registries nur signierte Images liefern dürfen und wie streng diese Validierung zu erfolgen hat.

Das führt in der Praxis zu einem interessanten Spannungsfeld: lokale, experimentelle Images sind typischerweise unsigniert, produktionsnahe Images jedoch signiert. Teams sollten daher ein klares Habitat definieren, in dem Experimente erlaubt sind – etwa lokale Namespaces oder Sandbox-Registries.

Für Pull/Push-Workflows gilt: Signaturen reisen mit dem Manifest. Ein Image, das lokal signiert wurde, bleibt signiert, sobald es in die Registry wandert. Podman übernimmt diese Details transparent.

31.6 Proxy-Registries, Mirror-Setups und Air-Gap-Umgebungen

Produktionsumgebungen greifen selten direkt auf Docker Hub oder Quay.io zu. Stattdessen sind Mirror- oder Proxy-Registries üblich, die vor allem zwei Vorteile bieten: Reproduzierbarkeit und Performance.

Ein Pull aus einem internen Mirror reduziert Latenzen drastisch. Gleichzeitig lässt sich der verfügbare Image-Katalog kontrollieren. In Air-Gap-Setups, wie sie in Industrie, Healthcare oder Behörden vorkommen, sind Push/Pull-Prozesse vollständig gekapselt. Images werden per Offline-Medium importiert, signiert und anschließend in eine isolierte Registry hochgeladen.

Die Konsequenz: Pull/Push wird zum Supply-Chain-Mechanismus. Sicherheit entsteht durch Kontrolle über die transportierten Bits – nicht durch Firewalls oder Netzwerksegmentierung.

31.7 Multiplatform-Transfers und Manifeste beim Push

Beim Push eines Manifests entscheidet Podman, welche architekturspezifischen Images zu übertragen sind. Ein lokales Manifest-Bundle, das sowohl AMD64- als auch ARM64-Varianten enthält, wird als Ganzes in die Registry geschrieben, sofern diese multiplatformfähig ist.

Für Architekturen, die hybride Entwicklungs- und Produktionsumgebungen kombinieren (z. B. Entwickler auf ARM-Macs, Deployments auf x86-Servern), ist das unverzichtbar. Ein einziger Push definiert die gesamte Plattformmatrix.

31.8 Praktische Hinweise für produktionsnahe Workflows