Eine Container Registry ist ein zentraler Speicherort für Container-Images. Ein Image ist das fertige Paket einer Anwendung samt aller Abhängigkeiten — Registrys machen diese Pakete auffindbar, ladbar und verteilbar. Wer mit Containern arbeitet, lädt Images aus einer Registry und legt eigene Images dort wieder ab.
Wie Images benannt werden
Der Name eines Images folgt einem festen Muster: Registry, Namespace, Name und Tag
ghcr.io/mein-team/webapp:v1.4.2
In diesem Beispiel ist ghcr.io die Registry, mein-team der Namespace, webapp der Image-Name und v1.4.2 der Tag. Fehlt der Registry-Teil, verwendet Docker standardmäßig Docker Hub. Mit docker pull und docker push holt man Images aus der Registry oder legt sie dort ab.
Öffentliche und private Registrys
Bekannte öffentliche Registrys sind Docker Hub, die GitHub Container Registry (GHCR), Quay.io und die Google Artifact Registry. Sie eignen sich für öffentliche Images und als bequemer Einstieg. Für eigene oder vertrauliche Images betreiben Teams private Registrys wie Harbor, Sonatype Nexus oder die integrierte GitLab Container Registry. Viele Anbieter erlauben auch private Repositories in ihren öffentlichen Registrys.
Rolle in der CI/CD-Pipeline
Die Registry ist das Herzstück jeder automatisierten Auslieferung: Eine CI/CD-Pipeline baut das Image, schiebt es in die Registry, und die Zielumgebung zieht es von dort. In Kubernetes zum Beispiel holen sich die Knoten das Image selbstständig aus der Registry, wenn ein Container startet. So wird die Registry zum verbindenden Glied zwischen Entwicklung und Betrieb.
Sicherheit in der Registry
Images sollten nur aus vertrauenswürdigen Quellen stammen. Registrys bieten dafür eine Authentifizierung für das Pushen und Pullen, Zugriffskontrolle pro Team und das Signieren von Images, damit sich Manipulationen erkennen lassen. Zusätzlich scannen viele Registrys Images auf bekannte Schwachstellen. Da Tags wie latest überschrieben werden können, ist der unveränderliche Digest (die Prüfsumme des Images) für reproduzierbare Ausrollungen die sicherere Referenz.
Abgrenzung zu verwandten Begriffen
Die Registry ist nicht zu verwechseln mit einem Repository für Quellcode oder einem Package-Manager für Software-Pakete: Sie verwaltet ausschließlich Container-Images, während die anderen Werkzeuge Code oder Bibliotheken verwalten. Zusammen mit der Pipeline und orchestrierten Umgebungen wie Kubernetes ist die Registry die Standard-Infrastruktur moderner Cloud-Computing-Anwendungen und auch im Docker-Compose-Alltag zuhause.