Containerkonzepte

In diesem Dokument werden wichtige Konzepte im Zusammenhang mit Containern vorgestellt, einschließlich Registrys, Repositories und Artefakten. Außerdem finden Sie einige grundlegende Informationen dazu, wie diese Konzepte auf Artifact Registry und Container Registry angewendet werden.

Registries

Eine Registry speichert und verteilt Container-Images und Artefakte, die nach Namen in Repositories geordnet sind. Eine Registry kann entweder ein einzelnes Repository oder mehrere Repositories enthalten und öffentlich oder privat sein.

Registry-Dienste wie Docker Hub und Artifact Registry bieten Optionen zum Erstellen öffentlicher oder privater Repositories. Beim Abrufen öffentlicher Images ist es wichtig, die möglichen Sicherheitsbedenken zu verstehen. Unter Abhängigkeitsmanagement finden Sie weitere Informationen zum Monitoring von Sicherheitslücken und zum Reduzieren des Abhängigkeitsbedarfs.

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 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 werden 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 gesendet wird, wird das Tag latest vom ursprünglichen Image in das neuere Image verschoben, wobei das erste Image ohne Tag belassen wird. Wir empfehlen, für Releases ein anderes Tag als latest anzugeben.

Der Begriff Repository wird nicht immer einheitlich verwendet. In Artifact Registry ist es sinnvoller, Teile des Image-Pfads zu verwenden, um das Projekt, -Region oder multiregionale Region und den Namen des Images zusammen mit dem Tag oder dem 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 unter 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, das die Version des Images angibt.

Bilder

Sowohl Artefakte als auch Images können in Artifact Registry gespeichert werden. Ein Artefakt kann ein beliebiges Element sein: eine Textdatei, ein Docker-Image oder ein Helm-Diagramm. Ein Image verweist hingegen in der Regel auf ein Container-Image. 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.

Bilder werden per Push in Repositories bzw. in Repositories hochgeladen und dann aus Repositories abruft oder heruntergeladen. Zur Angabe des richtigen Images und der richtigen Version 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 Name des Artefakts
  • :1.0 ist das Tag, das die Version des abzurufenden Artefakts angibt

Ebenen

In Repositories gespeicherte Container-Images werden inkrementell mithilfe von Layers erstellt. Unterschiedliche Bilder können einige der gleichen Ebenen verwenden. Ebenen werden je nach Image-Typ unterschiedlich definiert. Beispielsweise entspricht jede Anweisung in einem Dockerfile einer Schicht im Docker-Image. Innerhalb einer Registry teilen Images mit gemeinsamen Schichten diese Schichten, was die Speichereffizienz erhöht. Aus Sicherheitsgründen werden Ebenen nicht für verschiedene Registrys freigegeben.

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

Tags

Nutzer fügen beim Hoch- oder Herunterladen eines Images in ein Repository Tags hinzu, um die Version eines Images anzugeben. Ein Bild kann ein oder mehrere Tags oder auch keine Tags haben. Wenn Sie ein Image zweimal mit demselben Tag hochladen, wird das Tag aus dem ersten Image entfernt und zum zweiten Image verschoben. Das erste Image bleibt dabei ohne Tag. Das nicht getaggte Image ist weiterhin über seine Manifest-Digests zugänglich.

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 Image an hello-app:latest

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

ruft das Image hello-app:latest ab.

Wichtig: Wenn ein Image in ein Repository mit einem anderen Tag als latest übertragen wird, wird das latest-Tag nicht hinzugefügt. Daher kann es sein, dass das latest-Image hinter den aktuellsten Änderungen zurückbleibt. Für Releases empfehlen wir die Verwendung anderer Tags als latest. Weitere Informationen zum Taggen von Bildern findest du hier.

Manifeste

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

Wenn Sie zum Scannen oder Analysieren von Bildern Tools verwenden, gelten die Ergebnisse dieser Tools nur für das gescannte Image. Sie können sich nicht auf das Tag verlassen, um sicherzustellen, dass Sie das gescannte Image bereitstellen, da sich das Image, auf das vom Tag verwiesen wird, ändern kann.

Weitere Informationen zum Tagging und Manifesten von Artifact Registry finden Sie unter Images verwalten und Container-Images verwenden.

Nächste Schritte