Containerkonzepte

In diesem Dokument werden wichtige Konzepte im Zusammenhang mit Containern vorgestellt, einschließlich Registrys, Repositories und Artefakte. Außerdem sind einige grundlegende Informationen zur Anwendung dieser Konzepte auf Artifact Registry und Container Registry enthalten.

Registries

Eine Registry speichert und verteilt Container-Images und Artefakte nach Namen in Repositories. 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 Images abrufen, ist es wichtig, die möglichen Sicherheitsbedenken zu kennen. Lesen Sie mehr über das Abhängigkeitsmanagement, um mehr über das Monitoring von Sicherheitslücken und die Reduzierung des Abhängigkeitsbedarfs zu erfahren.

Registries sind in Repositories organisiert, in denen einzelne Container-Images gespeichert werden. Mit Artifact Registry können Sie mehrere Repositories in einem einzelnen Projekt erstellen und mit jedem Repository eine bestimmte -Region oder eine multiregionale verknüpfen. Ähnliche Repositories können nach Labels gruppiert werden.

Repositories

Bilder und Artefakte mit demselben Namen, aber unterschiedlichen Tags sind in Repositories organisiert. Wenn beim Hochladen eines Images an ein Repository kein Tag angegeben ist, wird das Image mit dem Tag latest getaggt. Wenn ein anderes Image ohne Angabe eines Tags hochgeladen wird, wird das Tag latest vom ursprünglichen Image zum neueren Image verschoben. Das erste Image bleibt ohne Tag. Wir empfehlen, für Releases ein anderes Tag als latest anzugeben.

Der Begriff Repository wird nicht immer verwendet. In Artifact Registry ist es sinnvoller, Teile des Image-Pfads zu verwenden, um das Projekt, die -Region oder den multiregionalen Standort und den Namen des Images zusammen mit dem Tag oder Manifest-Digest zu identifizieren, um die richtige Version zu identifizieren.

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 Images 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, mit dem die Version des Images angegeben wird.

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, während sich ein Image normalerweise auf ein Container-Image bezieht. Container-Images sind Softwarepakete, die alle Elemente enthalten, die zur Ausführung in einer beliebigen Umgebung erforderlich sind. Weitere Informationen finden Sie unter Was sind Container?.

Images werden per Push oder in Repositories hochgeladen und aus Repositories abruft oder heruntergeladen. Damit das richtige Image und die richtige Version angegeben werden können, müssen die eindeutige Registry und das 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 Artefaktname.
  • :1.0 ist das Tag, das die Version des abzurufenden Artefakts angibt.

Ebenen

In Repositories gespeicherte Container-Images werden inkrementell mithilfe von Ebenen erstellt. In verschiedenen Bildern können einige derselben Ebenen verwendet werden. Ebenen werden je nach Image-Typ unterschiedlich definiert. Beispielsweise entspricht jede Anweisung im Dockerfile einer Schicht im Docker-Image. Innerhalb einer Registry werden diese Schichten von Images mit gemeinsamen Ebenen gemeinsam genutzt, wodurch die Speichereffizienz erhöht wird. Aus Sicherheitsgründen werden Ebenen nicht in verschiedenen Registrys verwendet.

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

Tags

Nutzer fügen Tags hinzu, wenn sie ein Image per Push in ein Repository übertragen oder dort abrufen, um die Version eines Images anzugeben. Ein Bild kann ein oder mehrere Tags oder gar keine Tags haben. Wenn Sie ein Image zweimal mit demselben Tag senden, wird das Tag vom ersten Image entfernt und zum zweiten Image verschoben, sodass das erste Image ohne Tag bleibt. Auf das nicht getaggte Image kann weiterhin über die Manifest-Digests zugegriffen werden.

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

Beispiel:

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

überträgt das Bild an hello-app:latest.

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

ruft das Image hello-app:latest ab.

Wenn ein Image an ein Repository mit einem anderen Tag als latest übertragen wird, wird das Tag latest nicht hinzugefügt. Daher kann es sein, dass das latest-Image hinter den neuesten Änderungen zurückliegt. Für Releases empfehlen wir, andere Tags als latest zu verwenden. Weitere Informationen zum Taggen von Images finden Sie hier.

Manifeste

Mit Image-Manifesten werden die Ebenen in jedem Bild eindeutig identifiziert und angegeben. Manifeste werden durch eindeutige SHA-256-Hashes identifiziert, die Manifest-Digests genannt werden. Manifest-Digests sind zuverlässiger und sicherer als Tags, da mehrere Versionen desselben Images an dasselbe Tag gesendet werden können. Einige Images sind dann ohne Tags, während jedes Image eindeutig durch seinen Manifest-Digest angegeben ist.

Wenn Sie Tools zum Scannen oder Analysieren von Images verwenden, gelten die Ergebnisse dieser Tools nur für das gescannte Image. Sie können sich nicht auf das Tag verlassen, da sich das Image, auf das das Tag verweist, ändern kann, damit Sie das gescannte Image bereitstellen.

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

Nächste Schritte