Import imagí kontejneru do registru kontejneru

Image kontejneru můžete snadno importovat (kopírovat) do registru kontejneru Azure bez použití příkazů Dockeru. Můžete například importovat image z vývojového registru do produkčního registru nebo kopírovat základní image z veřejného registru.

Azure Container Registry zpracovává řadu běžných scénářů kopírování imagí a dalších artefaktů z existujícího registru:

  • Importuje image z veřejného registru.

  • Importujte image nebo artefakty OCI, včetně grafů Helm 3, z jiného registru kontejnerů Azure v rámci stejného předplatného Azure či tenantu Azure nebo napříč předplatnými a tenanty.

  • Importuje image z jiného než Azure privátního registru kontejneru.

Import imagí do registru kontejneru Azure má v porovnání s použitím příkazů Rozhraní příkazového řádku Dockeru následující výhody:

  • Pokud vaše klientské prostředí nepotřebuje místní instalaci Dockeru, můžete importovat jakoukoli image kontejneru bez ohledu na podporovaný typ operačního systému.

  • Pokud importujete image s více architekturami (například oficiální image Dockeru), image pro všechny architektury a platformy zadané v seznamu manifestu se zkopírují.

  • Pokud máte přístup k cílovému registru, nevyžadujete veřejný koncový bod registru.

Důležité

Import imagí vyžaduje podporu externího registru RFC 7233. Abyste se vyhnuli chybám, použijte registr, který podporuje rozsahy RFC 7233 při použití az acr import příkazu s identifikátorem URI registru.

Omezení

  • Maximální počet manifestů importovaného obrázku je 50.

  • Azure Container Registry podporuje import imagí z různých zdrojových registrů napříč poskytovateli cloudu. Pokud je zdrojem importu služba ACR, můžete importovat pouze z domovské oblasti zdrojové služby ACR. Regionální koncové body zdrojového registru ACR nejsou podporovány jako zdroje importu. Při importu ze zdrojové služby ACR zadejte globální koncový bod služby ACR zdroje. Import navíc vždy zapisuje obsah do domovské oblasti podřízené služby ACR. Viz referenční informace ke koncovému bodu Azure Container Registry.

Pokud chcete importovat image kontejneru, spusťte Azure CLI v Azure Cloud Shell nebo místně.

Poznámka:

Pokud potřebujete distribuovat stejné image kontejnerů napříč několika oblastmi Azure, Azure Container Registry podporuje také geografickou replikaci. Geografickou replikací registru (vyžaduje se úroveň služby Premium), můžete obsluhovat více oblastí s identickými názvy imagí a značek z jednoho registru.

Důležité

Chcete-li importovat do registru kontejnerů Azure s omezením přístupu k síti nebo z něj, musí tento omezený registr povolit přístup důvěryhodným službám, aby bylo možné obejít omezení sítě. Ve výchozím nastavení je nastavení povolené, takže import funguje. Pokud vytvoříte registr s privátním koncovým bodem nebo s pravidly brány firewall registru a toto nastavení nepovolíte, import selže.

Požadavky

Pokud ještě nemáte registr kontejneru Azure, vytvořte registr. Postup najdete v tématu Rychlý start: Vytvoření privátního registru kontejneru pomocí Azure CLI.

Pokud chcete importovat image do služby Azure Container Registry, musí mít vaše identita oprávnění k aktivaci importů v cílovém registru (Container Registry Data Importer and Data Reader roli). Přehled oprávnění a rolí služby Azure Container Registry

Import imagí kontejneru z veřejného registru

Důležité

Pokud chcete importovat z veřejného registru do registru kontejneru s omezeným přístupem na síť Azure, musí omezený registr povolit přístup důvěryhodnými službami k obejití sítě. Ve výchozím nastavení je toto nastavení povolené, takže import funguje. Pokud toto nastavení zakážete u nově vytvořeného registru s privátním koncovým bodem nebo s pravidly brány firewall pro registr, import selže.

Import imagí kontejneru z Docker Hub

Pomocí příkazu az acr import můžete například importovat image s více architekturami hello-world:latest z Docker Hubu do registru s názvem myregistry. Protože hello-world je oficiální image z Docker Hubu, je tato image ve výchozím library úložišti. Zahrňte název úložiště a volitelně značku do hodnoty parametru --source image. (Volitelně můžete obrázek identifikovat hodnotou hash manifestu místo značkou, což zaručuje konkrétní verzi image.)

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

Spuštěním příkazu az acr manifest list-metadata můžete ověřit, že je k tomuto obrázku přidruženo více manifestů:

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

Přes import artefaktu pomocí digestu bez přidání značky.

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

Pokud máte účet Docker Hub, použijte přihlašovací údaje při importu obrázku z Docker Hub. Jako parametry předejte uživatelské jméno a heslo Docker Hubu nebo az acr import. Následující příklad naimportuje veřejnou image z tensorflow úložiště v Docker Hubu pomocí přihlašovacích údajů Docker Hubu:

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>

Import imagí kontejneru ze služby Microsoft Container Registry

Například naimportujte ltsc2022 image Windows Server Core z úložiště Microsoft Container Registry windows.

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

Import bitových kopií kontejnerů z registru kontejnerů Azure ve stejném tenantovi služby Microsoft Entra

Image můžete importovat z registru kontejneru Azure ve stejném Microsoft Entra tenantovi pomocí integrovaných oprávnění Microsoft Entra.

  • Vaše identita musí mít oprávnění k zobrazení a vyžádání obrázků, tagů a odkazů OCI ze zdrojového registru (Container Registry Data Importer and Data Reader role přidělená na zdrojový registr).

  • Vaše identita musí mít také oprávnění ke čtení imagí a aktivaci importů v cílovém registru (Container Registry Data Importer and Data Reader role přiřazená cílovému registru).

  • Registr může být ve stejném nebo v jiném předplatném Azure v rámci stejného klienta Microsoft Entra.

  • Veřejný přístup ke zdrojovému registru je zakázaný. Pokud je veřejný přístup zakázaný, zadejte zdrojový registr podle ID prostředku namísto názvu přihlašovacího serveru registru.

  • Zdrojový registr nebo cílový registr s privátním koncovým bodem nebo pravidly brány firewall registru musí zajistit, aby omezený registr umožňoval důvěryhodným službám přístup k síti.

Import imagí kontejneru z registru ve stejném předplatném

Například naimportujte aci-helloworld:latest image ze zdrojového registru mysourceregistry do myregistry ve stejném předplatném Azure.

Následující příklad naimportuje aci-helloworld:latest image do myregistry ze zdrojového registru mysourceregistry , ve kterém je zakázaný přístup k veřejnému koncovému bodu registru. Zadejte ID prostředku zdrojového registru pomocí parametru --registry . Všimněte si, že --source parametr určuje pouze zdrojové úložiště a značku, nikoli název přihlašovacího serveru registru.

Pokud chcete pro zdrojový registr použít ověřování identity Microsoft Entra, zadejte příznak --registry <source-registry-resource-id>.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-helloworld:latest \
  --registry /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Import imagí kontejnerů z registru v jiném předplatném

Poznámka:

Pokud chcete importovat image z jednoho registru do jiného, musí zdrojové a cílové registry zajistit, aby obě oblasti byly zaregistrované pro Azure Container Registry (ACR) v rámci poskytovatelů prostředků předplatného.

V následujícím příkladu je mysourceregistry v jiném předplatném než myregistry ve stejném tenantovi. Pomocí parametru --registry zadejte ID prostředku zdrojového registru. Parametr --source určuje pouze zdrojové úložiště a značku, nikoli název přihlašovacího serveru registru.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-hello-world:latest \
  --registry /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Importujte image kontejnerů z registru pomocí přihlašovacích údajů instančního objektu služby

Pokud chcete importovat z registru, ke kterému nemůžete získat přístup pomocí integrovaných oprávnění služba Active Directory, použijte přihlašovací údaje instančního objektu (pokud jsou k dispozici) pro zdrojový registr. Zadejte ID aplikace a heslo Microsoft Entra instančního objektu, který má správný přístup k přiřazení role ke zdrojovému registru.

  • U instančních objektů Microsoft Entra se ujistěte, že je přiřazena buď Container Registry Repository Reader (pro registry s podporou ABAC), nebo AcrPull (pro registry bez ABAC).

Použití principálu služby je užitečné pro systémy sestavení a další bezobslužné systémy, které potřebují importovat obrazy do registru.

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

Import imagí kontejneru z registru kontejneru Azure v jiném tenantovi

Pokud chcete importovat image z registru kontejnerů Azure v jiném tenantovi Microsoft Entra, zadejte zdrojový registr pomocí názvu přihlašovacího serveru a zadejte přihlašovací údaje, které umožňují přístup typu pull k registru.

Import mezi tenanty se nepodporuje u veřejného registru zakázaného přístupu.

Import mezi tenanty s uživatelským jménem a heslem

Použijte například token pro úložiště Entra jiného než Microsoftu a heslo, nebo ID aplikace a heslo hlavní služby Microsoft Entra, která má správná přiřazení rolí pro zdrojový registr.

  • Pro objekty služby Microsoft Entra se ujistěte, že je ke zdrojovému registru přiřazené buď Container Registry Repository Reader (pro registry s podporou ABAC), nebo AcrPull (pro registry bez ABAC).
az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Import mezi tenanty s přístupovým tokenem

Pokud chcete získat přístup ke zdrojovému registru pomocí identity ve zdrojovém tenantovi s oprávněními registru, získejte přístupový token:

# 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

V cílovém tenantovi použijte přístupový token jako heslo pro az acr import příkaz. Zdrojový registr určuje název přihlašovacího serveru. V tomto příkazu není potřeba žádné uživatelské jméno:

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerepo:tag \
  --image targetimage:tag \
  --password ($token|ConvertFrom-Json).accessToken

Import imagí kontejneru z jiného než Azure privátního registru kontejneru

Importujte obrázek z privátního registru mimo Azure zadáním přihlašovacích údajů, které umožňují přístup k načítání z registru. Například vyžádat image z privátního registru Dockeru:

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

Řešení potíží s importy imagí kontejneru

Pokud se při importu obrázku zobrazí chyba, další informace najdete v následující tabulce.

Zpráva o chybě Vysvětlení
The remote server may not be RFC 7233 compliant Distribuční specifikace umožňuje formu hlavičky rozsahu Range: bytes=<start>-<end>. Vzdálený server však nemusí být kompatibilní s dokumentem RFC 7233.
Unexpected response status code Při dotazování rozsahu se ze zdrojového úložiště načetl neočekávaný stavový kód odpovědi.
Unexpected length of body in response Přijatá délka obsahu neodpovídá očekávané velikosti. Očekávaná velikost je určena na základě velikosti objektu blob a hlavičky Range.

Další kroky

V tomto článku jste se dozvěděli o importu imagí kontejnerů do registru kontejnerů Azure z veřejného registru nebo jiného privátního registru.