Informationen zu Registrierungen, Repositorys und ImagesAbout registries, repositories, and images

Dieser Artikel stellt die grundlegenden Konzepte von Containerregistern, Repositorys, Containerimages und verwandten Artefakten vor.This article introduces the key concepts of container registries, repositories, and container images and related artifacts.

RegistrierungRegistry

Eine Container-Registrierung ist ein Dienst, der Containerimages verteilt und speichert.A container registry is a service that stores and distributes container images. Docker Hub ist eine öffentliche Containerregistrierung, die die Open-Source-Community unterstützt und als allgemeiner Katalog von Images dient.Docker Hub is a public container registry that supports the open source community and serves as a general catalog of images. Azure Container Registry bietet Benutzern die direkte Steuerung ihrer Images mit integrierter Authentifizierung, Georeplikation, die die globale Verteilung und Zuverlässigkeit netzwerknaher Bereitstellungen unterstützt, Konfiguration von virtuellen Netzwerken und Firewalls, Tagsperren und vielen anderen erweiterten Funktionen.Azure Container Registry provides users with direct control of their images, with integrated authentication, geo-replication supporting global distribution and reliability for network-close deployments, virtual network and firewall configuration, tag locking, and many other enhanced features.

Zusätzlich zu den Docker-Containerimages unterstützt Azure Container Registry verwandte Inhaltsartefakte einschließlich Open Container Initiative-Imageformaten (OCI).In addition to Docker container images, Azure Container Registry supports related content artifacts including Open Container Initiative (OCI) image formats.

Inhaltsadressierbare Elemente eines ArtefaktsContent addressable elements of an artifact

Die Adresse eines Elements in einer Azure-Containerregistrierung enthält die folgenden Elemente.The address of an artifact in an Azure container registry includes the following elements.

[loginUrl]/[namespace]/[artifact:][tag]
  • loginUrl: Der vollqualifizierte Name des Registrierungshosts.loginUrl - The fully qualified name of the registry host. Der Registrierungshost in einer Azure-Containerregistrierung hat das Format meineregistrierung.azurecr.io (nur Kleinbuchstaben).The registry host in an Azure container registry is in the format myregistry.azurecr.io (all lowercase). Sie müssen die loginUrl angeben, wenn Sie Docker oder andere Clienttools verwenden, um Artefakte in eine Azure-Containerregistrierung zu pullen oder pushen.You must specify the loginUrl when using Docker or other client tools to pull or push artifacts to an Azure container registry.
  • namespace: Schrägstrichgetrennte logische Gruppierung verwandter Images oder Artefakte – z.B. für eine Arbeitsgruppe oder Appnamespace - Slash-delimited logical grouping of related images or artifacts - for example, for a workgroup or app
  • artifact: Der Name eines Repositorys für ein bestimmtes Image oder Artefaktartifact - The name of a repository for a particular image or artifact
  • tag: Eine bestimmte Version eines in einem Repository gespeicherten Images oder Artefaktstag - A specific version of an image or artifact stored in a repository

Beispielsweise kann der vollständige Name eines Images in einer Azure-Containerregistrierung so aussehen:For example, the full name of an image in an Azure container registry might look like:

myregistry.azurecr.io/marketing/campaign10-18/email-sender:v2

Weitere Informationen zu diesen Elementen finden Sie in den folgenden Abschnitten.See the following sections for details about these elements.

Name des RepositorysRepository name

Containerregistrierungen verwalten Repositorys, Sammlungen von Containerimages oder andere Artefakte mit dem gleichen Namen, aber anderen Tags.Container registries manage repositories, collections of container images or other artifacts with the same name, but different tags. Die folgenden drei Images befinden sich beispielsweise im Repository „acr-helloworld“:For example, the following three images are in the "acr-helloworld" repository:

acr-helloworld:latest
acr-helloworld:v1
acr-helloworld:v2

Repository-Namen können auch Namespaces enthalten.Repository names can also include namespaces. Namespaces ermöglichen die Gruppierung von Images mit durch Schrägstrich getrennten Repositorynamen. Beispiel:Namespaces allow you to group images using forward slash-delimited repository names, for example:

marketing/campaign10-18/web:v2
marketing/campaign10-18/api:v3
marketing/campaign10-18/email-sender:v2
product-returns/web-submission:20180604
product-returns/legacy-integrator:20180715

ImageImage

Ein Containerimage oder sonstiges Artefakt in einer Registrierung wird einem oder mehreren Tags zugeordnet, verfügt über eine oder mehrere Ebenen und wird durch ein Manifest identifiziert.A container image or other artifact within a registry is associated with one or more tags, has one or more layers, and is identified by a manifest. Wenn Sie wissen, wie diese Komponenten miteinander in Beziehung stehen, können Sie Ihre Registrierung effektiv verwalten.Understanding how these components relate to each other can help you manage your registry effectively.

TagTag

Das Tag für ein Image oder anderes Artefakt gibt die Version an.The tag for an image or other artifact specifies its version. Einem einzelnen Artefakt in einem Repository kann eines oder mehrere Tags zugewiesen werden, und Tags können auch entfernt werden.A single artifact within a repository can be assigned one or many tags, and may also be "untagged." Sie können also alle Tags aus einem Image löschen, während die Daten des Images (die Ebenen) in der Registrierung verbleiben.That is, you can delete all tags from an image, while the image's data (its layers) remain in the registry.

Das Repository (oder Repository und Namespace) plus ein Tag definieren den Namen eines Images.The repository (or repository and namespace) plus a tag defines an image's name. Sie können Push- und Pull-Vorgänge für Images ausführen, indem Sie deren Namen im Push- oder Pull-Vorgang festlegen.You can push and pull an image by specifying its name in the push or pull operation.

Wie Sie Containerimages mit Tags versehen, hängt von den Szenarien ihrer Entwicklung oder Bereitstellung ab.How you tag container images is guided by your scenarios to develop or deploy them. So werden beispielsweise dauerhafte Tags für die Pflege Ihrer Basisimages und eindeutige Tags für die Bereitstellung von Images empfohlen.For example, stable tags are recommended for maintaining your base images, and unique tags for deploying images. Weitere Informationen finden Sie unter Empfehlungen für das Taggen und die Versionsverwaltung von Containerimages.For more information, see Recommendations for tagging and versioning container images.

EbeneLayer

Containerimages bestehen aus einer oder mehreren Ebenen, die jeweils einer Zeile in der Dockerfile-Datei entsprechen, die das Image definiert.Container images are made up of one or more layers, each corresponding to a line in the Dockerfile that defines the image. Images in einer Registrierung teilen allgemeine Ebenen, die die Speichereffizienz verbessern.Images in a registry share common layers, increasing storage efficiency. Z.B. können mehrere Bilder in verschiedenen Repositorys dieselbe Alpine Linux-Basisebene teilen, aber nur eine Kopie dieser Ebene wird in der Registrierung gespeichert.For example, several images in different repositories might share the same Alpine Linux base layer, but only one copy of that layer is stored in the registry.

Die Ebenenfreigabe optimiert außerdem die Ebenenverteilung auf Knoten mit mehreren Images, die gemeinsame Ebenen verwenden.Layer sharing also optimizes layer distribution to nodes with multiple images sharing common layers. Wenn ein Image auf einem Knoten beispielsweise die Alpine Linux-Ebene als Basis enthält, wird beim nachfolgenden Pull-Vorgang eines anderen Images, das auf dieselbe Ebene des Knotens verweist, die Ebene nicht auf den Knoten übertragen.For example, if an image already on a node includes the Alpine Linux layer as its base, the subsequent pull of a different image referencing the same layer doesn't transfer the layer to the node. Stattdessen verweist es auf die Ebene, die bereits auf dem Knoten vorhanden ist.Instead, it references the layer already existing on the node.

Um sichere Isolation und Schutz vor potenzieller Ebenenmanipulation zu ermöglichen, werden die Ebenen nicht Registrierungen übergreifend freigegeben.To provide secure isolation and protection from potential layer manipulation, layers are not shared across registries.

ManifestManifest

Jedes Containerimage oder Artefakt, das per Push an eine Containerregistrierung übertragen wird, ist einem Manifest zugeordnet.Each container image or artifact pushed to a container registry is associated with a manifest. Das Manifest wird von der Registrierung generiert, wenn das Image per Push übertragen wird. Es identifiziert das Image und gibt die Ebenen an.The manifest, generated by the registry when the image is pushed, uniquely identifies the image and specifies its layers. Sie können die Manifeste für ein Repository mit dem Azure CLI-Befehl az acr repository show-manifests auflisten:You can list the manifests for a repository with the Azure CLI command az acr repository show-manifests:

az acr repository show-manifests --name <acrName> --repository <repositoryName>

Listen Sie beispielsweise die Manifeste für das Repository "acr-helloworld" auf:For example, list the manifests for the "acr-helloworld" repository:

$ az acr repository show-manifests --name myregistry --repository acr-helloworld
[
  {
    "digest": "sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108",
    "tags": [
      "latest",
      "v3"
    ],
    "timestamp": "2018-07-12T15:52:00.2075864Z"
  },
  {
    "digest": "sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57",
    "tags": [
      "v2"
    ],
    "timestamp": "2018-07-12T15:50:53.5372468Z"
  },
  {
    "digest": "sha256:7ca0e0ae50c95155dbb0e380f37d7471e98d2232ed9e31eece9f9fb9078f2728",
    "tags": [
      "v1"
    ],
    "timestamp": "2018-07-11T21:38:35.9170967Z"
  }
]

Manifest-DigestManifest digest

Manifeste werden durch einen eindeutigen SHA-256-Hash oder manifest digest identifiziert.Manifests are identified by a unique SHA-256 hash, or manifest digest. Jedes Image oder Artefakt – ob mit oder ohne Tag  – wird durch seinen Digest identifiziert.Each image or artifact--whether tagged or not--is identified by its digest. Der Digest-Wert ist eindeutig, auch wenn die Ebenendaten des Images mit einem anderen Image übereinstimmen.The digest value is unique even if the image's layer data is identical to that of another image. Dieser Mechanismus ermöglicht das wiederholte Pushen von Images mit identischen Tags an eine Registrierung.This mechanism is what allows you to repeatedly push identically tagged images to a registry. Beispielsweise können Sie wiederholt myimage:latest in Ihre Registrierung pushen, ohne einen Fehler zu erhalten, da jedes Image durch seinen eindeutigen Digest identifiziert wird.For example, you can repeatedly push myimage:latest to your registry without error because each image is identified by its unique digest.

Sie können ein Image aus einer Registrierung pullen, indem Sie den Digest im Pull-Vorgang angeben.You can pull an image from a registry by specifying its digest in the pull operation. Einige Systeme können so konfiguriert werden, dass sie Push-Vorgänge per Digest ausführen, da so sichergestellt ist, dass die Version des Images per Pull abgerufen wird, selbst wenn ein Image mit identischen Tags anschließend per Push in die Registrierung übertragen wird.Some systems may be configured to pull by digest because it guarantees the image version being pulled, even if an identically tagged image is subsequently pushed to the registry.

Hier ein Beispiel für das Pullen eines Images aus dem Repository „acr-helloworld“ per Manifest-Digest:For example, pull an image from the "acr-helloworld" repository by manifest digest:

$ docker pull myregistry.azurecr.io/acr-helloworld@sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108

Wichtig

Wenn Sie wiederholt geänderte Bilder mit identischen Tags per Push übertragen, kann das zu verwaisten Images führen – Images ohne Tags, die Speicherplatz in der Registrierung belegen.If you repeatedly push modified images with identical tags, you might create orphaned images--images that are untagged, but still consume space in your registry. Images ohne Tags werden beim Auflisten oder Anzeigen von Images nach Tag nicht in der Azure-Befehlszeilenschnittstelle oder im Azure-Portal angezeigt.Untagged images are not shown in the Azure CLI or in the Azure portal when you list or view images by tag. Die Ebenen sind jedoch noch vorhanden und verbrauchen Speicherplatz in der Registrierung.However, their layers still exist and consume space in your registry. Das Löschen eines nicht markierten Image gibt Speicherplatz in der Registrierung frei, wenn das Manifest das einzige oder letzte ist, das auf eine bestimmte Ebene zeigt.Deleting an untagged image frees registry space when the manifest is the only one, or the last one, pointing to a particular layer. Informationen zum Freigeben von Speicherplatz, der von Images ohne Tags verwendet wird, finden Sie unter Löschen von Containerimages in Azure Container Registry.For information about freeing space used by untagged images, see Delete container images in Azure Container Registry.

Nächste SchritteNext steps

Erfahren Sie mehr über Imagespeicher und die unterstützten Inhaltsformate in Azure Container Registry.Learn more about image storage and supported content formats in Azure Container Registry.