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