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 ett antal 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 kommer från Azure

Avbildningsimport till ett Azure-containerregister har följande fördelar än att använda Docker CLI-kommandon:

  • Eftersom klientmiljön inte behöver en lokal Docker-installation importerar du alla containeravbildningar, oavsett vilken OS-typ som stöds.

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

  • Åtkomst till målregistret behöver inte använda registrets offentliga slutpunkt.

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.

Anteckning

Om du behöver distribuera identiska containeravbildningar över flera Azure-regioner Azure Container Registry även stöd för geo-replikering. Genom att geo-replikera ett register (Premium-tjänstnivå krävs) kan du hantera flera regioner med identiska avbildnings- och taggnamn från ett enda register.

Viktigt

Ändringar av avbildningsimporten mellan två Azure-containerregister har introducerats från och med januari 2021:

  • Import till eller från ett nätverksbegränsat Azure-containerregister kräver det begränsade registret för att 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 brandväggsregler för registret 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 det 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 importImage-åtgärden). Se Azure Container Registry roller och behörigheter.

Importera från ett offentligt register

Importera från Docker Hub

Använd till exempel kommandot az acr import för att importera avbildningen med flera arkitekturer från Docker Hub till ett hello-world:latest register med namnet myregistry. Eftersom hello-world är en officiell avbildning Docker Hub är den här avbildningen på standarddatabasen. library Inkludera lagringsplatsens namn och eventuellt en tagg i värdet för --source avbildningsparametern. (Du kan även identifiera en avbildning med manifestet sammanfattad i stället för 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 az acr repository show-manifests kommandot :

az acr repository show-manifests \
  --name myregistry \
  --repository hello-world

Om du har ett Docker Hub-kontorekommenderar vi att du använder autentiseringsuppgifterna när du importerar en avbildning från Docker Hub. Skicka Docker Hub användarnamn och lösenord 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 hjälp Docker Hub autentiseringsuppgifter:

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 ltsc2019 Server Core-avbildningen från windows lagringsplatsen 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 Azure Active Directory behörigheter.

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

  • 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 namnet på registerinloggningsservern.

  • Om källregistret och/eller målregistret har en privat slutpunkt eller om brandväggsreglerna för registret tillämpas ser du till att det begränsade registret tillåter att betrodda tjänster får åtkomst till nätverket.

Importera från ett register i samma prenumeration

Importera till exempel aci-helloworld:latest avbildningen 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 aci-helloworld:latest avbildningen till myregistry från källregistret mysourceregistry där åtkomsten till registrets offentliga slutpunkt är inaktiverad. Ange resurs-ID för källregistret med --registry parametern . Observera att --source parametern endast anger källdatabasen 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 av manifestet digest (SHA-256-hash, representerad som sha256:... ) i stället för av tagg:

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

Importera från ett register i en annan prenumeration

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 --registry parametern . Observera att --source parametern endast anger källdatabasen och taggen, inte namnet på registerinloggningsservern.

az acr import \
  --name myregistry \
  --source samples/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 integrerade Active Directory-behörigheter kan du använda autentiseringsuppgifter för tjänstens huvudnamn (om det är tillgängligt) till källregistret. Ange appID och lösenord 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 Azure Active Directory-klientorganisation anger du källregistret efter inloggningsservernamn och anger autentiseringsuppgifter som ger pull-åtkomst till registret.

Import mellan klientorganisationen med användarnamn och lösenord

Du kan till exempel använda en token och ett lösenord för lagringsplatsen, 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 klientorganisationen 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ålklienten skickar du åtkomsttoken som ett lösenord till az acr import kommandot . Källregistret anges med inloggningsservernamnet. 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>

Importera från ett privat containerregister som inte kommer från Azure

Importera en avbildning från ett privat register som inte är ett Azure-register genom att ange autentiseringsuppgifter som ger pull-åtkomst till registret. Hämta till exempel 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.