Containerkonzepte

In diesem Dokument werden die wichtigsten Konzepte im Zusammenhang mit Container-Images vorgestellt, darunter Registrierungen, Repositories und Artefakte. Außerdem finden Sie einige grundlegende Informationen dazu, wie diese Konzepte auf Artifact Registry und Container Registry zutreffen.

Die Beispiele für Artifact Registry auf dieser Seite beziehen sich hauptsächlich auf Docker-Formate und gcr.io-Repositories. Weitere Informationen finden Sie unter Unterstützte Formate und Repository-Übersicht.

Registries

In einer Registry werden Container-Images und Artefakte nach Namen in Repositories gespeichert und verteilt. Eine Registry kann entweder ein einzelnes Repository oder mehrere Repositories enthalten und kann öffentlich oder privat sein.

Registry-Dienste wie Docker Hub und Artifact Registry bieten Optionen zum Erstellen öffentlicher oder privater Repositories. Wenn Sie öffentliche Bilder abrufen, ist es wichtig, die möglichen Sicherheitsrisiken zu kennen. Weitere Informationen zum Überwachen von Sicherheitslücken und zum Reduzieren des Abhängigkeitspfads finden Sie unter Abhängigkeitsverwaltung.

Registries sind in Repositories organisiert, in denen einzelne Container-Images gespeichert werden. Mit Artifact Registry können Sie mehrere Repositories in einem einzigen Projekt erstellen und jedem Repository einen bestimmten regionalen oder multiregionalen Speicherort zuweisen. Zugehörige Repositories können nach Labels gruppiert werden.

Artifact Registry-Repositories und Image-Verwaltung

In Docker-Repositories der Artifact Registry können Sie mehrere Container-Images mit unterschiedlichen Namen im selben Repository speichern. Jede Version eines Bildes wird durch den Digest des Bildes identifiziert und kann einem Tag zugeordnet werden. Tags können veränderlich oder unveränderlich sein. Weitere Informationen zu Container-Image-Versionen und ‑Tags finden Sie unter Container-Image-Versionen.

Artifact Registry bezieht sich in der Regel auf Teile des Pfads zu einem Image, um das Projekt, den regionalen oder multiregionalen Speicherort und den Namen des Images zusammen mit dem Tag oder Manifest-Digest zu identifizieren, um die richtige Version zu ermitteln.

Beispiel:

docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

  • us-west1 ist der Speicherort des Repositorys.
  • docker.pkg.dev ist der Hostname für Repositories im Docker-Format.
  • PROJECT ist der Namespace, der mit IhrerGoogle Cloud Projekt-ID erstellt wurde.
  • quickstart-docker-repo ist der Namespace in Ihrem Projekt, in dem Sie Bilder speichern. In Artifact Registry wird dieser Teil des Pfads als Repository bezeichnet.
  • quickstart-image ist der Name für alle Versionen von quickstart-image und wird oft als Image bezeichnet.
  • tag1 ist das Tag, das die Version des Images angibt.

Bilder

Sowohl Artefakte als auch Images können in Artifact Registry gespeichert werden. Ein Artefakt kann alles sein: eine Textdatei, ein Docker-Image oder ein Helm-Diagramm. Ein Image bezieht sich in der Regel auf ein Container-Image. Container-Images sind Softwarepakete, die alle Elemente enthalten, die zur Ausführung in beliebigen Umgebungen erforderlich sind. Weitere Informationen finden Sie unter Was sind Container?.

Images werden in Repositories gepusht oder hochgeladen und aus Repositories abgerufen oder heruntergeladen. Um das richtige Image und die richtige Version anzugeben, müssen die eindeutige Registry und das eindeutige Artefakt angegeben werden.

Weitere Informationen zu Repository- und Image-Namen in Artifact Registry finden Sie unter Repository- und Image-Namen.

Ebenen

In Repositories gespeicherte Container-Images werden mithilfe von Ebenen inkrementell erstellt. Für verschiedene Bilder können einige derselben Ebenen verwendet werden. Je nach Bildtyp werden Ebenen unterschiedlich definiert. Jede Anweisung in einem Dockerfile entspricht beispielsweise einer Schicht im Docker-Image. Innerhalb einer Registry teilen sich Bilder mit gemeinsamen Ebenen diese Ebenen, was die Speichereffizienz erhöht. Aus Sicherheitsgründen werden Ebenen nicht für verschiedene Register gemeinsam verwendet.

Wenn Sie ein Container-Image löschen, werden die Ebenen nicht sofort gelöscht. Ebenen, auf die keine Bilder in der Registry verweisen, werden täglich gelöscht.

Tags

Nutzer fügen Tags hinzu, wenn sie ein Image in ein Repository pushen oder daraus pullen, um die Version eines Images anzugeben. Ein Bild kann ein oder mehrere Tags oder gar keine Tags haben. Wenn Sie veränderliche Tags verwenden und ein Bild zweimal mit demselben Tag pushen, wird das Tag aus dem ersten Bild entfernt und in das zweite verschoben. Das erste Bild bleibt dann ohne Tag. Das nicht getaggte Bild ist weiterhin über seine Manifest-Digests zugänglich.

Wenn Sie unveränderliche Tags verwenden, sind die folgenden Aktionen nicht zulässig:

  • Ein getaggtes Bild löschen Das Löschen nicht getaggter Bilder ist weiterhin zulässig.
  • Entfernen Sie ein Tag aus einem Bild.
  • Pushen eines Bildes mit einem Tag, das bereits von einer anderen Version des Bildes im Repository verwendet wird.

Das Tag latest ist ein spezielles Tag, das angehängt wird, wenn Bilder ohne Tag gepusht werden.

Beispiel:

docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app

sendet das Bild an hello-app:latest

docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app

zieht das Bild hello-app:latest.

Wenn ein Bild mit einem anderen Tag als latest in ein Repository gepusht wird, wird das latest-Tag nicht hinzugefügt. Daher ist es möglich, dass das latest-Bild nicht die neuesten Änderungen enthält. Wir empfehlen, für Releases andere Tags als latest zu verwenden.

Manifeste

Image-Manifeste identifizieren und spezifizieren die Ebenen in jedem Bild eindeutig. Manifeste werden durch eindeutige SHA-256-Hashes, sogenannte Manifest-Digests, identifiziert. Manifest-Digests sind zuverlässiger und sicherer als Tags, da in Repositories mit veränderlichen Tags mehrere Versionen desselben Images an dasselbe Tag gepusht werden können, wodurch einige Images ohne Tags bleiben. Jedes Image wird jedoch durch seinen Manifest-Digest eindeutig angegeben.

Wenn Sie zum Scannen oder Analysieren von Bildern Tools verwenden, sind die Ergebnisse dieser Tools nur für das gescannte Bild gültig. Um sicherzustellen, dass Sie das gescannte Image bereitstellen, können Sie sich nicht auf das Tag verlassen, da sich das Image, auf das das Tag verweist, möglicherweise ändert.

Weitere Informationen zu Artifact Registry-spezifischen Taggings und Manifesten finden Sie unter Images verwalten und Container-Images verwenden.

Nächste Schritte