Containerkonzepte

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

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ängigkeits-Footprints 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.

Repositories

Images und Artefakte mit demselben Namen, aber unterschiedlichen Tags werden in Repositories organisiert. Wenn beim Pushen eines Images in ein Repository kein Tag angegeben wird, wird das Image mit dem Tag latest getaggt. Wenn ein anderes Bild ohne Angabe eines Tags gepusht wird, wird das Tag latest vom ursprünglichen Bild zum neueren Bild verschoben. Das erste Bild bleibt dann ohne Tag. Wir empfehlen, Releases ein anderes Tag als latest zu geben.

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 Docker-Repositories.
  • PROJECT ist der Namespace, der von Ihrer Google 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 das Repository für alle Versionen von quickstart-image und wird oft als Image bezeichnet.
  • tag1 ist das Tag, das die Version des Images angibt.

Images

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.

Beispiel:

docker pull us-west1-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

  • us-west1-docker.pkg.dev ist die Registry
  • /google-samples/containers/gke/ sind der Namespace und die untergeordneten Namespaces. In Artifact Registry ist google-samples das Google Cloud -Projekt und containers wird als Artifact Registry-Repository bezeichnet.
  • hello-app ist der Name des Artefakts.
  • :1.0 ist das Tag, das die Version des abzurufenden Artefakts angibt.

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 Imagetyp werden Schichten unterschiedlich definiert. Beispielsweise entspricht jede Anweisung in einem Dockerfile 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 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. Auf das nicht getaggte Bild kann weiterhin über die Manifest-Digests zugegriffen werden.

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 (Manifest-Digests) identifiziert. Manifest-Digests sind zuverlässiger und sicherer als Tags, da mehrere Versionen desselben Bildes an dasselbe Tag gepusht werden können, wodurch einige Bilder ohne Tags bleiben. Jedes Bild 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 Tagging- und Manifesten finden Sie unter Images verwalten und Container-Images verwenden.

Nächste Schritte