Importieren von Containerimages in eine Containerregistrierung
Sie können Containerimages einfach in eine Azure-Containerregistrierung importieren (kopieren), ohne Docker-Befehle verwenden zu müssen. Sie können beispielsweise Images aus einer Entwicklungsregistrierung in eine Produktionsregistrierung importieren oder Basisimages aus einer öffentlichen Registrierung kopieren.
Azure Container Registry ermöglicht viele allgemeine Szenarien zum Kopieren von Images und anderer Artefakte aus einer vorhandenen Registrierung:
Importieren von Images aus einer öffentlichen Registrierung
Importieren von Images oder OCI-Artefakten einschließlich Helm 3-Diagrammen aus einer anderen Azure Container Registry-Instanz in demselben oder einem anderen Azure-Abonnement oder -Mandanten
Importieren aus einer Azure-fremden privaten Containerregistrierung
Der Imageimport in eine Azure-Containerregistrierung bietet gegenüber der Verwendung von Docker CLI-Befehlen die folgenden Vorteile:
Wenn Ihre Clientumgebung keine lokale Docker-Installation erfordert, können Sie unabhängig vom unterstützten Betriebssystemtyp beliebige Containerimages importieren.
Wenn Sie Images mit mehreren Architekturen (etwa offizielle Docker-Images) importieren, werden Images für alle Architekturen und Plattformen kopiert, die in der Manifestliste angegeben sind.
Wenn Sie Zugriff auf die Zielregistrierung haben, benötigen Sie den öffentlichen Endpunkt der Registrierung nicht.
Wichtig
- Für das Importieren von Images ist die Unterstützung von RFC 7233 für die externe Registrierung erforderlich. Es wird empfohlen, eine Registrierung zu verwenden, die RFC 7233-Bereiche unterstützt, während Sie den Befehl „az acr import” mit dem Registrierungs-URI verwenden, um Fehler zu vermeiden.
Einschränkungen
- Die maximale Anzahl von Manifesten für ein importiertes Image beträgt 50.
- Die maximale Größe der Ebene für ein aus einer öffentlichen Registrierung importiertes Image beträgt 2 GiB.
Damit Sie Containerimages importieren können, muss für diesen Artikel die Azure-Befehlszeilenschnittstelle in Azure Cloud Shell oder lokal (Version 2.0.55 oder höhere Version empfohlen) ausgeführt werden. Führen Sie az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.
Hinweis
Azure Container Registry unterstützt darüber hinaus die Georeplikation, falls Sie identische Containerimages auf mehrere Azure-Regionen verteilen müssen. Durch die Georeplikation einer Registrierung (Premium-Dienstebene erforderlich) können Sie in mehreren Regionen identische Image- und Tagnamen aus einer einzelnen Registrierung bereitstellen.
Wichtig
Änderungen am Imageimport zwischen zwei Azure Container Registry-Instanzen zum Januar 2021:
- Für den Import in eine Azure Container Registry-Instanz mit Netzwerkeinschränkungen oder aus dieser muss die eingeschränkte Registrierung das Umgehen des Netzwerks für den Zugriff durch vertrauenswürdige Dienste erlauben. Standardmäßig ist die Einstellung aktiviert und ermöglicht den Import. Wenn die Einstellung in einer neu erstellten Registrierung mit einem privaten Endpunkt oder mit Firewallregeln für die Registrierung nicht aktiviert ist, tritt beim Import ein Fehler auf.
- Bei einer vorhandenen Azure Container Registry-Instanz mit Netzwerkeinschränkungen, die als Importquelle oder -ziel verwendet wird, ist die Aktivierung dieser Netzwerksicherheitsfunktion optional, wird jedoch empfohlen.
Voraussetzungen
Wenn Sie nicht bereits über eine Azure-Containerregistrierung verfügen, erstellen Sie eine Registrierung. Die hierzu erforderlichen Schritte finden Sie unter Schnellstart: Erstellen einer privaten Containerregistrierung mit der Azure CLI.
Um ein Image in eine Azure-Containerregistrierung importieren zu können, muss Ihre Identität über Schreibberechtigungen für die Zielregistrierung (mindestens die Rolle „Mitwirkender“ oder eine benutzerdefinierte Rolle, die die importImage-Aktion zulässt) verfügen. Informationen hierzu finden Sie unter Azure Container Registry: Rollen und Berechtigungen.
Importieren aus einer öffentlichen Registrierung
Wichtig
Zum Importieren aus einer öffentlichen Registrierung in eine Azure-Containerregistrierung mit Netzwerkeinschränkungen muss die eingeschränkte Registrierung den Zugriff durch vertrauenswürdige Dienste zulassen, um das Netzwerk zu umgehen. Standardmäßig ist die Einstellung aktiviert und ermöglicht den Import. Wenn die Einstellung in einer neu erstellten Registrierung mit einem privaten Endpunkt oder mit Firewallregeln für die Registrierung nicht aktiviert ist, tritt beim Import ein Fehler auf.
Importieren aus Docker Hub
Verwenden Sie beispielsweise den Befehl az acr import, um das Image hello-world:latest
mit mehreren Architekturen aus Docker Hub in eine Registrierung namens myregistry zu importieren. hello-world
ist ein offizielles Image von Docker Hub und befindet sich daher im library
-Standardrepository. Fügen Sie den Repositorynamen und optional ein Tag in den Wert des Imageparameters --source
ein. (Optional können Sie ein Image anhand seines Manifest-Digest anstelle seines Tags bestimmen. Damit wird eine bestimmte Version eines Images garantiert.)
az acr import \
--name myregistry \
--source docker.io/library/hello-world:latest \
--image hello-world:latest
Sie können überprüfen, ob mehrere Manifeste mit diesem Image verbunden sind, indem Sie den Befehl az acr manifest list-metadata ausführen:
az acr manifest list-metadata \
--name hello-world \
--registry myregistry
So importieren Sie ein Artefakte nach Digest ohne Hinzufügen eines Tags
az acr import \
--name myregistry \
--source docker.io/library/hello-world@sha256:abc123 \
--repository hello-world
Wenn Sie ein Docker Hub-Konto haben, sollten Sie beim Importieren eines Images aus Docker Hub diese Anmeldeinformationen verwenden. Übergeben Sie den Docker Hub-Benutzernamen mit dem zugehörigen Kennwort oder ein persönliches Zugriffstoken als Parameter an az acr import
. Im folgenden Beispiel wird ein öffentliches Image aus dem Repository tensorflow
mithilfe von Docker Hub-Anmeldeinformationen in Docker Hub importiert:
az acr import \
--name myregistry \
--source docker.io/tensorflow/tensorflow:latest-gpu \
--image tensorflow:latest-gpu
--username <Docker Hub user name>
--password <Docker Hub token>
Importieren aus der Microsoft-Containerregistrierung
Importieren Sie beispielsweise das Windows Server Core-Image ltsc2019
aus dem Repository windows
in die Microsoft Container Registry.
az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019
Importieren von Images aus einer Azure-Containerregistrierung im selben AD-Mandanten
Mithilfe von integrierten Microsoft Entra-Berechtigungen können Sie ein Image aus einer Azure-Containerregistrierung im selben AD-Mandanten importieren.
Ihre Identität muss über Microsoft Entra-Berechtigungen zum Lesen aus der Quellregistrierung (Rolle „Leser“) und zum Importieren in die Zielregistrierung verfügen (Rolle „Mitwirkender“ oder eine benutzerdefinierte Rolle, welche die importImage-Aktion zulässt).
Die Registrierung kann sich in dem gleichen oder einem anderen Azure-Abonnement im gleichen Active Directory-Mandanten befinden.
Der öffentliche Zugriff auf die Quellregistrierung ist deaktiviert. Wenn der öffentliche Zugriff deaktiviert ist, geben Sie die Quellregistrierung nach Ressourcen-ID anstelle des Servernamens der Registrierungsanmeldung an.
Die Quell- oder Zielregistrierung mit einem privaten Endpunkt oder Registrierungsfirewallregeln muss die eingeschränkte Registrierung den Zugriff auf das Netzwerk für vertrauenswürdige Dienste zulassen.
Importieren aus einer Registrierung im gleichen Abonnement
Importieren Sie beispielsweise das Image aci-helloworld:latest
aus der Quellregistrierung mysourceregistry in myregistry im gleichen Azure-Abonnement.
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld:latest \
--image aci-helloworld:latest
Das folgende Beispiel importiert das aci-helloworld:latest
-Image in myregistry aus einer Quellregistrierung mysourceregistry, in der der Zugriff auf den öffentlichen Endpunkt der Registrierung deaktiviert ist. Geben Sie die Ressourcen-ID der Quellregistrierung mit dem Parameter --registry
an. Beachten Sie, dass der Parameter --source
nur das Quellrepository und Tag, aber nicht den Namen des Anmeldeservers für die Registrierung angibt.
az acr import \
--name myregistry \
--source aci-helloworld:latest \
--image aci-helloworld:latest \
--registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry
Das folgende Beispiel importiert ein Image nicht anhand des Tags, sondern anhand des Manifest-Digest (SHA-256-Hash, dargestellt als sha256:...
):
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg
Importieren aus einer Registrierung in einem anderen Abonnement
Hinweis
Um ein Image aus einer Registrierung in eine andere zu importieren, müssen die Quell- und Zielregistrierungen sicherstellen, dass beide Regionen für die Azure Container Registry (ACR) unter den Ressourcenanbietern des Abonnements registriert sind.
Im folgenden Beispiel befindet sich mysourceregistry im gleichen Active Directory-Mandanten in einem anderen Abonnement als myregistry. Geben Sie die Ressourcen-ID der Quellregistrierung mit dem Parameter --registry
an. Beachten Sie, dass der Parameter --source
nur das Quellrepository und Tag, aber nicht den Namen des Anmeldeservers für die Registrierung angibt.
az acr import \
--name myregistry \
--source aci-helloworld:latest \
--image aci-hello-world:latest \
--registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry
Importieren aus einer Registrierung mit Dienstprinzipal-Anmeldeinformationen
Sie können für den Import aus einer Registrierung, auf die Sie nicht mit integrierten Active Directory-Berechtigungen zugreifen können, Anmeldeinformationen für einen Dienstprinzipal für die Quellregistrierung verwenden (sofern verfügbar). Geben Sie die App-ID und das Kennwort eines Active Directory-Dienstprinzipals an, der über ACRPull-Zugriff auf die Quellregistrierung verfügt. Die Verwendung eines Dienstprinzipals empfiehlt sich für Buildsysteme und andere unbeaufsichtigte Systeme, die Images in Ihre Registrierung importieren müssen.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Importieren von Images aus einer Azure-Containerregistrierung in einem anderen AD-Mandanten
Um Images aus einer Azure-Containerregistrierung in einem anderen Microsoft Entra-Mandanten zu importieren, geben Sie die Quellregistrierung nach Anmeldeservernamen an und stellen die Anmeldeinformationen bereit, die den Pullzugriff auf die Registrierung zulassen.
- Der mandantenübergreifende Import über deaktivierte Registrierung für den öffentlichen Zugriff wird nicht unterstützt.
Mandantenübergreifender Import mit Benutzername und Kennwort
Verwenden Sie z. B. ein Token mit Repositorygültigkeitsbereich und ein Kennwort oder die App-ID und das Kennwort für einen Active Directory-Dienstprinzipal, der über ACRPull-Zugriff auf die Quellregistrierung verfügt.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Mandantenübergreifender Import mit Zugriffstoken
- Der mandantenübergreifende Import über deaktivierte Registrierung für den öffentlichen Zugriff wird nicht unterstützt.
Um mithilfe einer Identität im Quellmandanten, die über Registrierungsberechtigungen verfügt, auf die Quellregistrierung zuzugreifen, können Sie ein Zugriffstoken abrufen:
# Login to Azure CLI with the identity, for example a user-assigned managed identity
az login --identity --username <identity_ID>
# Get access token returned by `az account get-access-token`
az account get-access-token
Übergeben Sie im Zielmandanten das Zugriffstoken als Kennwort an den Befehl az acr import
. Die Quellregistrierung gibt den Anmeldeservernamen an. Beachten Sie, dass in diesem Befehl kein Benutzername erforderlich ist:
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--password <access-token>
Importieren aus einer Azure-fremden privaten Containerregistrierung
Importieren Sie ein Image aus einer privaten Registrierung außerhalb von Azure, indem Sie Anmeldeinformationen angeben, die den Pullzugriff auf die Registrierung ermöglichen. Rufen Sie beispielsweise ein Image per Pull aus einer privaten Docker-Registrierung ab:
az acr import \
--name myregistry \
--source docker.io/sourcerepo/sourceimage:tag \
--image sourceimage:tag \
--username <username> \
--password <password>
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie Containerimages aus einer öffentlichen Registrierung oder einer anderen privaten Registrierung in eine Azure-Containerregistrierung importieren.
- Informationen zu weiteren Optionen beim Importieren von Images finden Sie in der Befehlsreferenz für az acr import.
Der Imageimport kann Ihnen helfen, Inhalte in eine Containerregistrierung in einer anderen Azure-Region, einem anderen Abonnement oder Microsoft Entra-Mandanten zu verschieben. Weitere Informationen finden Sie unter Manuelles Verschieben einer Containerregistrierung in eine andere Region.
Export von Artefakten aus einer Containerregistrierung mit Netzwerkeinschränkungen deaktivieren.