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 vonquickstart-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 istgoogle-samples
das Google Cloud-Projekt undcontainers
wird als Artifact Registry-Repository bezeichnethello-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
- Docker-Kurzanleitung
- Mit Container-Images arbeiten
- Helm-Kurzanleitung
- Mit Helm-Diagrammen arbeiten
- Informieren Sie sich über DevOps und sehen Sie sich das DORA-Forschungsprogramm an.