Importera containeravbildningar till ett containerregister

Du kan enkelt importera (kopiera) containeravbildningar till ett Azure-containerregister, utan att använda Docker-kommandon. Du kan till exempel importera avbildningar från ett utvecklingsregister till ett produktionsregister eller kopiera basavbildningar från ett offentligt register.

Azure Container Registry hanterar många vanliga scenarier för att kopiera avbildningar och andra artefakter från ett befintligt register:

  • Importera avbildningar från ett offentligt register

  • Importera avbildningar eller OCI-artefakter, inklusive Helm 3-diagram från ett annat Azure-containerregister, i samma eller en annan Azure-prenumeration eller klientorganisation

  • Importera från ett privat containerregister som inte är Azure

Avbildningsimport till ett Azure-containerregister har följande fördelar jämfört med att använda Docker CLI-kommandon:

  • Om klientmiljön inte behöver någon lokal Docker-installation kan du importera alla containeravbildningar, oavsett vilken operativsystemtyp som stöds.

  • Om du importerar avbildningar med flera arkitekturer (till exempel officiella Docker-avbildningar) kopieras avbildningar för alla arkitekturer och plattformar som anges i manifestlistan.

  • Om du har åtkomst till målregistret behöver det inte använda registrets offentliga slutpunkt.

Viktigt!

  • Import av avbildningar kräver att det externa registret stöder RFC 7233. Vi rekommenderar att du använder ett register som stöder RFC 7233-intervall när du använder kommandot az acr import med register-URI:n för att undvika fel.

Begränsningar

  • Det maximala antalet manifest för en importerad avbildning är 50.
  • Den maximala lagerstorleken för en avbildning som importerats från ett offentligt register är 2 GiB.

För att importera containeravbildningar kräver den här artikeln att du kör Azure CLI i Azure Cloud Shell eller lokalt (version 2.0.55 eller senare rekommenderas). Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Kommentar

Om du behöver distribuera identiska containeravbildningar i flera Azure-regioner stöder Azure Container Registry även geo-replikering. Genom att georeplikera ett register (premiumtjänstnivån krävs) kan du hantera flera regioner med identiska avbildnings- och taggnamn från ett enda register.

Viktigt!

Ändringar i avbildningsimporten mellan två Azure-containerregister har införts från och med januari 2021:

  • Import till eller från ett nätverksbegränsat Azure-containerregister kräver att det begränsade registret tillåter åtkomst från betrodda tjänster för att kringgå nätverket. Som standard är inställningen aktiverad, vilket tillåter import. Om inställningen inte är aktiverad i ett nyligen skapat register med en privat slutpunkt eller med regler för registerbrandväggen misslyckas importen.
  • I ett befintligt nätverksbegränsat Azure-containerregister som används som importkälla eller mål är det valfritt att aktivera den här nätverkssäkerhetsfunktionen, men rekommenderas.

Förutsättningar

Om du inte redan har ett Azure-containerregister skapar du ett register. Anvisningar finns i Snabbstart: Skapa ett privat containerregister med hjälp av Azure CLI.

Om du vill importera en avbildning till ett Azure-containerregister måste din identitet ha skrivbehörighet till målregistret (minst deltagarrollen eller en anpassad roll som tillåter åtgärden importImage). Se Roller och behörigheter för Azure Container Registry.

Importera från ett offentligt register

Viktigt!

För att kunna importera från ett offentligt register till ett nätverksbegränsat Azure-containerregister måste det begränsade registret tillåta åtkomst från betrodda tjänster för att kringgå nätverket. Som standard är inställningen aktiverad, vilket tillåter import. Om inställningen inte är aktiverad i ett nyligen skapat register med en privat slutpunkt eller med regler för registerbrandväggen misslyckas importen.

Importera från Docker Hub

Använd till exempel kommandot az acr import för att importera avbildningen med flera arkitekturer hello-world:latest från Docker Hub till ett register med namnet myregistry. Eftersom hello-world är en officiell avbildning från Docker Hub finns den här avbildningen på standardlagringsplatsen library . Inkludera lagringsplatsens namn och eventuellt en tagg i värdet för bildparametern --source . (Du kan också identifiera en bild med dess manifestsammandrag i stället för efter tagg, vilket garanterar en viss version av en avbildning.)

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

Du kan kontrollera att flera manifest är associerade med den här avbildningen genom att köra kommandot az acr manifest list-metadata :

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

Så här importerar du en artefakt efter sammandrag utan att lägga till en tagg:

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

Om du har ett Docker Hub-konto rekommenderar vi att du använder autentiseringsuppgifterna när du importerar en avbildning från Docker Hub. Skicka Docker Hub-användarnamnet och lösenordet eller en personlig åtkomsttoken som parametrar till az acr import. I följande exempel importeras en offentlig avbildning från tensorflow lagringsplatsen i Docker Hub med autentiseringsuppgifter för Docker Hub:

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>

Importera från Microsoft Container Registry

Importera till exempel Windows Server Core-avbildningen ltsc2019 från lagringsplatsen windows i Microsoft Container Registry.

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

Importera från ett Azure-containerregister i samma AD-klientorganisation

Du kan importera en avbildning från ett Azure-containerregister i samma AD-klientorganisation med hjälp av integrerade Microsoft Entra-behörigheter.

  • Din identitet måste ha Microsoft Entra-behörighet att läsa från källregistret (läsarrollen) och importera till målregistret (deltagarrollen eller en anpassad roll som tillåter åtgärden importImage).

  • Registret kan finnas i samma eller en annan Azure-prenumeration i samma Active Directory-klientorganisation.

  • Offentlig åtkomst till källregistret kan vara inaktiverad. Om offentlig åtkomst är inaktiverad anger du källregistret efter resurs-ID i stället för efter namnet på registerinloggningsservern.

  • Källregistret och/eller målregistret med en privat slutpunkt eller brandväggsregler för registret måste se till att det begränsade registret tillåter betrodda tjänster att komma åt nätverket.

Importera från ett register i samma prenumeration

Importera till exempel avbildningen aci-helloworld:latest från ett källregister mysourceregistry till myregistry i samma Azure-prenumeration.

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

I följande exempel importeras avbildningen aci-helloworld:latest till myregistry från ett källregister mysourceregistry där åtkomst till registrets offentliga slutpunkt är inaktiverad. Ange resurs-ID för källregistret med parametern --registry . Observera att parametern --source endast anger källlagringsplatsen och taggen, inte namnet på registerinloggningsservern.

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

I följande exempel importeras en bild efter manifestsammandrag (SHA-256-hash, representerad som sha256:...) i stället för efter tagg:

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

Importera från ett register i en annan prenumeration

Kommentar

Om du vill importera en avbildning från ett register till ett annat måste käll- och målregistren se till att båda regionerna är registrerade för Azure Container Registry (ACR) under prenumerationens resursprovidrar.

I följande exempel finns mysourceregistry i en annan prenumeration än myregistry i samma Active Directory-klientorganisation. Ange resurs-ID för källregistret med parametern --registry . Observera att parametern --source endast anger källlagringsplatsen och taggen, inte namnet på registerinloggningsservern.

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

Importera från ett register med autentiseringsuppgifter för tjänstens huvudnamn

Om du vill importera från ett register som du inte kan komma åt med hjälp av integrerade Active Directory-behörigheter kan du använda autentiseringsuppgifter för tjänstens huvudnamn (om tillgängligt) till källregistret. Ange appID och lösenordet för ett Active Directory-tjänsthuvudnamn som har ACRPull-åtkomst till källregistret. Att använda tjänstens huvudnamn är användbart för att skapa system och andra obevakade system som behöver importera avbildningar till registret.

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

Importera från ett Azure-containerregister i en annan AD-klientorganisation

Om du vill importera från ett Azure-containerregister i en annan Microsoft Entra-klientorganisation anger du källregistret efter inloggningsservernamn och anger autentiseringsuppgifter som aktiverar pull-åtkomst till registret.

Import mellan klientorganisationer med användarnamn och lösenord

Du kan till exempel använda en token och lösenord med lagringsplatsomfattning eller appID och lösenord för ett Active Directory-tjänsthuvudnamn som har ACRPull-åtkomst till källregistret.

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

Import mellan klientorganisationer med åtkomsttoken

Om du vill komma åt källregistret med hjälp av en identitet i källklientorganisationen som har registerbehörigheter kan du hämta en åtkomsttoken:

# 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

I målklientorganisationen skickar du åtkomsttoken som ett lösenord till az acr import kommandot. Källregistret anger namnet på inloggningsservern. Observera att inget användarnamn behövs i det här kommandot:

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

Kommentar

Korsklientorganisation fungerar inte i molnen. Import mellan klientorganisationer över privata slutpunkter stöds inte heller.

Importera från ett privat containerregister som inte är Azure

Importera en avbildning från ett privat register som inte är azure genom att ange autentiseringsuppgifter som aktiverar pull-åtkomst till registret. Du kan till exempel hämta en avbildning från ett privat Docker-register:

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

Nästa steg

I den här artikeln har du lärt dig hur du importerar containeravbildningar till ett Azure-containerregister från ett offentligt register eller ett annat privat register.

  • Ytterligare alternativ för avbildningsimport finns i kommandoreferensen az acr import .