Containerinstallatiekopieën importeren in een containerregister

U kunt eenvoudig containerinstallatiekopieën importeren (kopiëren) naar een Azure-containerregister zonder Docker-opdrachten te gebruiken. Importeer bijvoorbeeld installatiekopieën uit een ontwikkelingsregister naar een productieregister of kopieer basisinstallatiekopieën uit een openbaar register.

Azure Container Registry verwerkt een aantal veelvoorkomende scenario's voor het kopiëren van installatiekopieën en andere artefacten uit een bestaand register:

  • Installatiekopieën importeren uit een openbaar register

  • Installatiekopieën of OCI-artefacten importeren, waaronder Helm 3-grafieken uit een ander Azure-containerregister, in hetzelfde of een ander Azure-abonnement of een andere Azure-tenant

  • Importeren uit een niet-Azure-privécontainerregister

Het importeren van installatiekopieën in een Azure-containerregister heeft de volgende voordelen ten opzichte van het gebruik van Docker CLI-opdrachten:

  • Omdat uw clientomgeving geen lokale Docker-installatie nodig heeft, importeert u een containerinstallatiekopie, ongeacht het ondersteunde type besturingssysteem.

  • Wanneer u installatiekopieën met meerdere architectuur (zoals officiële Docker-installatiekopieën) importeert, worden installatiekopieën voor alle architecturen en platforms die zijn opgegeven in de manifestlijst gekopieerd.

  • Toegang tot het doelregister hoeft het openbare eindpunt van het register niet te gebruiken.

Belangrijk

  • Voor het importeren van installatiekopieën is rfc 7233 vereist voor het externe register. U wordt aangeraden een register te gebruiken dat RFC 7233-bereiken ondersteunt tijdens het gebruik van de opdracht az acr import met de register-URI om fouten te voorkomen.

Beperkingen

  • Het maximum aantal manifesten voor een geïmporteerde afbeelding is 50.
  • De maximale laaggrootte voor een installatiekopieën die zijn geïmporteerd uit een openbaar register, is 2 GiB.

Als u containerinstallatiekopieën wilt importeren, moet u de Azure CLI uitvoeren in Azure Cloud Shell of lokaal (versie 2.0.55 of hoger aanbevolen). Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Notitie

Als u identieke containerinstallatiekopieën wilt distribueren over meerdere Azure-regio's, biedt Azure Container Registry ook ondersteuning voor geo-replicatie. Door geo-replicatie van een register (Premium-servicelaag vereist) kunt u meerdere regio's met identieke installatiekopieën en tagnamen uit één register bedienen.

Belangrijk

Wijzigingen in het importeren van installatiekopieën tussen twee Azure-containerregisters zijn geïntroduceerd vanaf januari 2021:

  • Importeren naar of van een azure-containerregister met netwerkbeperking vereist dat het beperkte register toegang toestaat door vertrouwde services om het netwerk te omzeilen. De instelling is standaard ingeschakeld, waardoor importeren is toegestaan. Als de instelling niet is ingeschakeld in een nieuw register met een privé-eindpunt of met registerfirewallregels, mislukt het importeren.
  • In een bestaand azure-containerregister met netwerkbeperking dat wordt gebruikt als importbron of doel, is het inschakelen van deze netwerkbeveiligingsfunctie optioneel, maar wordt aanbevolen.

Vereisten

Als u nog geen Azure-containerregister hebt, maakt u een register. Zie Quickstart: Een privécontainerregister maken met behulp van de Azure CLI voor stappen.

Als u een installatiekopie wilt importeren in een Azure-containerregister, moet uw identiteit schrijfmachtigingen hebben voor het doelregister (ten minste de rol Inzender of een aangepaste rol waarmee de importImage-actie wordt toegestaan). Zie Azure Container Registry-rollen en -machtigingen.

Importeren uit een openbaar register

Belangrijk

Als u wilt importeren uit een openbaar register naar een azure-containerregister met netwerkbeperking, moet het beperkte register toegang verlenen door vertrouwde services om het netwerk te omzeilen. De instelling is standaard ingeschakeld, waardoor importeren is toegestaan. Als de instelling niet is ingeschakeld in een nieuw register met een privé-eindpunt of met registerfirewallregels, mislukt het importeren.

Importeren vanuit Docker Hub

Gebruik bijvoorbeeld de opdracht az acr import om de installatiekopie voor meerdere architectuur hello-world:latest uit Docker Hub te importeren in een register met de naam myregistry. Omdat hello-world dit een officiële installatiekopieën is van Docker Hub, bevindt deze installatiekopieën zich in de standaardopslagplaats library . Neem de naam van de opslagplaats en eventueel een tag op in de waarde van de parameter van de --source installatiekopieën. (U kunt desgewenst een afbeelding identificeren op basis van de manifestsamenvating in plaats van tag, waardoor een bepaalde versie van een installatiekopieën wordt gegarandeerd.)

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

U kunt controleren of er meerdere manifesten zijn gekoppeld aan deze installatiekopieën door de opdracht az acr manifest list-metadata uit te voeren:

az acr manifest list-metadata \
  --name hello-world \
  --registry myregistry

Een artefact importeren door samenvatting zonder een tag toe te voegen:

az acr import \
   --name myregistry \
   --source docker.io/library/hello-world@sha256:abc123 \
   --repository hello-world

Als u een Docker Hub-account hebt, raden we u aan de referenties te gebruiken bij het importeren van een installatiekopieën uit Docker Hub. Geef de Docker Hub-gebruikersnaam en het wachtwoord of een persoonlijk toegangstoken door als parameters.az acr import In het volgende voorbeeld wordt een openbare installatiekopieën uit de tensorflow opslagplaats in Docker Hub geïmporteerd met behulp van Docker Hub-referenties:

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>

Importeren uit Microsoft Container Registry

Importeer bijvoorbeeld de ltsc2019 Windows Server Core-installatiekopieën uit de windows opslagplaats in Microsoft Container Registry.

az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019

Importeren uit een Azure-containerregister in dezelfde AD-tenant

U kunt een installatiekopieën importeren uit een Azure-containerregister in dezelfde AD-tenant met behulp van geïntegreerde Microsoft Entra-machtigingen.

  • Uw identiteit moet microsoft Entra-machtigingen hebben om te lezen uit het bronregister (lezerrol) en om te importeren in het doelregister (inzenderrol of een aangepaste rol waarmee de importImage-actie kan worden uitgevoerd).

  • Het register kan zich in hetzelfde of een ander Azure-abonnement in dezelfde Active Directory-tenant bevinden.

  • Openbare toegang tot het bronregister kan worden uitgeschakeld. Als openbare toegang is uitgeschakeld, geeft u het bronregister op resource-id op in plaats van op de aanmeldingsservernaam van het register.

  • Als het bronregister en/of het doelregister een privé-eindpunt of firewallregels voor het register heeft, moet u ervoor zorgen dat het beperkte register vertrouwde services toegang geeft tot het netwerk.

Importeren uit een register in hetzelfde abonnement

Importeer bijvoorbeeld de aci-helloworld:latest installatiekopie uit een bronregister mysourceregistry in myregistry in hetzelfde Azure-abonnement.

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld:latest \
  --image aci-helloworld:latest

In het volgende voorbeeld wordt de aci-helloworld:latest installatiekopie geïmporteerd in myregistry uit een bronregister waarin de toegang tot het openbare eindpunt van het register is uitgeschakeld. Geef de resource-id van het bronregister op met de --registry parameter. U ziet dat de --source parameter alleen de bronopslagplaats en tag opgeeft, niet de naam van de aanmeldingsserver van het register.

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

In het volgende voorbeeld wordt een afbeelding geïmporteerd op basis van manifestsamenvating (SHA-256-hash, vertegenwoordigd als sha256:...) in plaats van op tag:

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg

Importeren uit een register in een ander abonnement

Notitie

Als u een installatiekopieën van het ene register naar het andere wilt importeren, moeten de bron- en doelregisters ervoor zorgen dat beide regio's zijn geregistreerd voor Azure Container Registry (ACR) onder de resourceproviders van het abonnement.

In het volgende voorbeeld bevindt mysourceregistry zich in een ander abonnement dan myregistry in dezelfde Active Directory-tenant. Geef de resource-id van het bronregister op met de --registry parameter. U ziet dat de --source parameter alleen de bronopslagplaats en tag opgeeft, niet de naam van de aanmeldingsserver van het register.

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

Importeren uit een register met behulp van referenties voor de service-principal

Als u wilt importeren uit een register waartoe u geen toegang hebt met geïntegreerde Active Directory-machtigingen, kunt u referenties van de service-principal (indien beschikbaar) gebruiken voor het bronregister. Geef de appID en het wachtwoord op van een Active Directory-service-principal met ACRPull-toegang tot het bronregister. Het gebruik van een service-principal is handig voor het bouwen van systemen en andere systemen zonder toezicht die installatiekopieën moeten importeren in uw register.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Importeren uit een Azure-containerregister in een andere AD-tenant

Als u wilt importeren uit een Azure-containerregister in een andere Microsoft Entra-tenant, geeft u het bronregister op met de naam van de aanmeldingsserver en geeft u referenties op waarmee pull-toegang tot het register mogelijk is.

Importeren tussen tenants met gebruikersnaam en wachtwoord

Gebruik bijvoorbeeld een token en wachtwoord binnen het bereik van de opslagplaats, of de appID en het wachtwoord van een Active Directory-service-principal met ACRPull-toegang tot het bronregister.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Importeren tussen tenants met toegangstoken

Als u toegang wilt krijgen tot het bronregister met behulp van een identiteit in de brontenant met registermachtigingen, kunt u een toegangstoken ophalen:

# 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

Geef in de doeltenant het toegangstoken als een wachtwoord door aan de az acr import opdracht. Het bronregister wordt opgegeven door de naam van de aanmeldingsserver. U ziet dat er geen gebruikersnaam nodig is in deze opdracht:

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --password <access-token>

Notitie

Meerdere tenants werken niet in de clouds. Importeren tussen tenants via privé-eindpunten wordt ook niet ondersteund.

Importeren uit een niet-Azure-privécontainerregister

Importeer een installatiekopie uit een niet-Azure-privéregister door referenties op te geven die pull-toegang tot het register mogelijk maken. Haal bijvoorbeeld een installatiekopie op uit een persoonlijk Docker-register:

az acr import \
  --name myregistry \
  --source docker.io/sourcerepo/sourceimage:tag \
  --image sourceimage:tag \
  --username <username> \
  --password <password>

Volgende stappen

In dit artikel hebt u geleerd hoe u containerinstallatiekopieën importeert in een Azure-containerregister vanuit een openbaar register of een ander privéregister.