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 vonquickstart-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 istgoogle-samples
das Google Cloud -Projekt undcontainers
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
- Docker-Kurzanleitung
- Mit Container-Images arbeiten
- Helm-Kurzanleitung
- Mit Helm-Charts arbeiten
- Lesen Sie mehr über DevOps und informieren Sie sich über das DORA-Forschungsprogramm.