Container-Registries sind die zentrale Bezugsquelle für Images und bilden das Fundament verteilter Build- und Deployment-Prozesse. Sie entsprechen funktional den Paketquellen klassischer Linux-Distributionen: Sie liefern die Basisartefakte, die anschließend lokal ausgeführt, weiterverarbeitet oder in automatisierten Pipelines integriert werden.
Podman nutzt für den Zugriff auf Registries ausschließlich standardisierte Mechanismen aus der OCI Distribution Specification. Es existiert kein Daemon, der Registry-Operationen kapselt oder abstrahiert. Alle Vorgänge – Pull, Push, Authentifizierung, Signaturprüfung – laufen sichtbar und nachvollziehbar über definierte Konfigurationsdateien und Bibliotheken.
Zentrale Steuerdatei für Registry-Verhalten:
/etc/containers/registries.conf
Sie definiert:
Beispiel:
unqualified-search-registries = ["docker.io", "quay.io"]
[[registry]]
location = "registry.example.com"
insecure = trueDie Transparenz dieser Konfiguration erleichtert Debugging und erlaubt exakte Kontrolle darüber, wohin Images gezogen oder gepusht werden.
Podman speichert Anmeldedaten nicht in einem Dienst, sondern in JSON-Dateien, die direkt vom Benutzer erzeugt und verwaltet werden.
Login:
podman login quay.ioSpeicherorte:
$XDG_RUNTIME_DIR/containers/auth.json # temporär, sessionbezogen
$HOME/.config/containers/auth.json # persistent
Format: Docker-kompatibel.
Beispiel:
{
"auths": {
"quay.io": {
"auth": "dXNlcjpwYXNz"
}
}
}Da Podman denselben Standard wie Buildah, Skopeo und CRI-O verwendet, lassen sich dieselben Credentials systemweit nutzen.
Standardfall, sowohl interaktiv als auch automatisiert nutzbar.
Zahlreiche Registries ersetzen Kennwörter durch Tokens. Podman unterscheidet technisch nicht – das Token wird wie ein Passwort verarbeitet.
Automatisierte Pipelines nutzen dedizierte Maschinenkonten. Deren Credentials können in CI/CD-Umgebungen generiert und in Auth-Dateien eingebunden werden.
Bei Cloud-basierten Registries wird ein ID-Token generiert und als Zugangsschlüssel verwendet. Podman selbst abstrahiert den Token-Prozess nicht, sondern verarbeitet das Resultat.
Standardbefehle:
podman pull registry.example.com/app:1.0
podman push registry.example.com/app:1.0TLS ist Standard. Nicht signierte oder selbstsignierte Registries benötigen explizite Freischaltung:
[[registry]]
location = "registry.example.com"
insecure = truePodman unterstützt die Prüfung von Image-Signaturen. Grundlage ist
policy.json:
podman pull --signature-policy /etc/containers/policy.json imageSkopeo kopiert Images direkt zwischen Registries:
skopeo copy docker://quay.io/app:1.0 \
docker://registry.example.com/app:1.0Der Vorgang spart lokalen Speicher und verkürzt Transportwege.
Für interne Registries sind folgende Punkte relevant:
CA-Zertifikate werden unter folgendem Pfad abgelegt:
/etc/containers/certs.d/<registry>/ca.crt
Damit lässt sich auch eine vollständig interne PKI abbilden.
Werden akzeptiert, sobald sie explizit im Registry-spezifischen Zertifikatspfad liegen.
Automatisierungstools (Ansible, Secret-Management-Lösungen, CI-Umgebungen) können Auth-Dateien erzeugen oder verteilen.
Eine konsistente Tagging-Strategie ist entscheidend, um Varianten eines Images verwaltbar zu halten:
v1, v1.2.3)dev, staging,
prod)amd64, arm64)debug, slim)Podman erzwingt kein Schema, unterstützt jedoch sämtliche Konventionen vollständig.
Registries werden oft in Stufen betrieben:
skopeo copy docker://dev-registry/app:v1 \
docker://prod-registry/app:v1Mehrere Registries können Last verteilen oder Standorte bedienen.
Offline-Verteilung:
podman save app:latest > app.tar
podman load < app.tarPodman verwendet dieselben Registry-Credentials wie die meisten Kubernetes-Distributionen. Auth-Dateien können direkt in Kubernetes-Secrets überführt werden:
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=$HOME/.config/containers/auth.json \
--type=kubernetes.io/dockerconfigjsonDamit entsteht eine durchgehende Linie:
Podman → Registry → Orchestrator.
Registry-Zugriffe sind eine grundlegende Funktion der Container-Infrastruktur. Podman behandelt sie transparent und standardkonform. Jede Operation – Authentifizierung, Transport, Signaturprüfung, Zertifikatsvalidierung – erfolgt ohne versteckte Komponenten. Diese Einfachheit erleichtert Debugging, Automatisierung und die Integration in unterschiedlichste Deployment-Umgebungen.