Import imagí kontejneru do registru kontejneru

Image kontejneru (kopírování) můžete snadno importovat do registru kontejnerů Azure bez použití příkazů Dockeru. Můžete například importovat image z vývojového registru do produkčního registru nebo zkopí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:

  • Import imagí z veřejného registru

  • Import imagí nebo artefaktů OCI, včetně grafů Helm 3 z jiného registru kontejnerů Azure, ve stejném nebo jiném předplatném nebo tenantovi Azure

  • Import z privátního registru kontejneru mimo Azure

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

  • 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 přistupujete k cílovému registru, nemusí používat veřejný koncový bod registru.

Důležité

  • Import imagí vyžaduje, aby externí registr podporoval RFC 7233. Doporučujeme použít registr, který podporuje rozsahy RFC 7233 při použití příkazu az acr import s identifikátorem URI registru, aby nedocházelo k selháním.

Omezení

  • Maximální počet manifestů importovaného obrázku je 50.
  • Maximální velikost vrstvy pro image importovanou z veřejného registru je 2 GiB.

Pokud chcete importovat image kontejnerů, tento článek vyžaduje, abyste spustili Azure CLI v Azure Cloud Shellu nebo místně (doporučuje se verze 2.0.55 nebo novější). Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

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é

Změny importu imagí mezi dvěma registry kontejnerů Azure byly zavedeny od ledna 2021:

  • Import do nebo z registru kontejnerů Azure s omezeným přístupem k síti vyžaduje, aby omezený registr povolil přístup důvěryhodnými službami , aby se síť obešla. Ve výchozím nastavení je nastavení povolené a povoluje import. Pokud nastavení není v nově vytvořeném registru s privátním koncovým bodem nebo s pravidly brány firewall registru povolené, import se nezdaří.
  • V existujícím registru kontejnerů Azure s omezeným přístupem k síti, který se používá jako zdroj nebo cíl importu, je povolení této funkce zabezpečení sítě volitelné, ale doporučuje se.

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 registru kontejneru Azure, musí mít vaše identita oprávnění k zápisu do cílového registru (alespoň roli Přispěvatel nebo vlastní role, která umožňuje akci importImage). Viz role a oprávnění služby Azure Container Registry.

Import z veřejného registru

Důležité

Pokud chcete importovat z veřejného registru do služby Azure Container Registry s omezeným přístupem k síti, vyžaduje, aby registr s omezeným přístupem důvěryhodnými službami umožnil obejít síť. Ve výchozím nastavení je nastavení povolené a povoluje import. Pokud nastavení není v nově vytvořeném registru s privátním koncovým bodem nebo s pravidly brány firewall registru povolené, import se nezdaří.

Import z Docker Hubu

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

Import artefaktu hodnotou digest 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 Hubu, doporučujeme při importu image z Docker Hubu použít přihlašovací údaje. Jako parametry az acr importpředejte uživatelské jméno a heslo Docker Hubu nebo osobní přístupový token. 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 ze služby Microsoft Container Registry

Naimportujte ltsc2019 například image Windows Server Core z windows úložiště ve službě Microsoft Container Registry.

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

Import z registru kontejneru Azure ve stejném tenantovi AD

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

  • Vaše identita musí mít oprávnění Microsoft Entra ke čtení ze zdrojového registru (role Čtenář) a k importu do cílového registru (role přispěvatele nebo vlastní role , která umožňuje akci importImage).

  • Registr může být ve stejném nebo jiném předplatném Azure ve stejném tenantovi Active Directory.

  • Veřejný přístup ke zdrojovému registru může být 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 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.

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

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.

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

Následující příklad naimportuje obrázek podle hodnoty hash manifestu (sha-256 hash, reprezentovaný jako sha256:...) namísto značky:

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

Import 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 Active Directory. 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.

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

Import z registru pomocí přihlašovacích údajů instančního objektu

Pokud chcete importovat z registru, ke kterému nemůžete získat přístup pomocí integrovaných oprávnění služby Active Directory, můžete pro zdrojový registr použít přihlašovací údaje instančního objektu (pokud jsou k dispozici). Zadejte ID aplikace a heslo instančního objektu služby Active Directory, který má přístup ACRPull ke zdrojovému registru. Použití instančního objektu je užitečné pro systémy sestavení a další bezobslužné systémy, které potřebují importovat image do registru.

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

Import z registru kontejneru Azure v jiném tenantovi AD

Pokud chcete importovat z registru kontejneru Azure v jiném tenantovi Microsoft Entra, zadejte zdrojový registr podle názvu přihlašovacího serveru a zadejte přihlašovací údaje, které umožňují přístup k vyžádání obsahu do registru.

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

Můžete například použít token a heslo v oboru úložiště nebo ID aplikace a heslo instančního objektu služby Active Directory, který má přístup ACRPull ke zdrojovému registru.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo: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, můžete získat 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 předejte přístupový token jako heslo k az acr import příkazu. Zdrojový registr určuje název přihlašovacího serveru. Všimněte si, že v tomto příkazu není potřeba žádné uživatelské jméno:

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

Poznámka:

Mezi tenanty nefunguje napříč cloudy. Import mezi tenanty přes privátní koncové body se také nepodporuje.

Import z privátního registru kontejneru mimo Azure

Import image z privátního registru mimo Azure zadáním přihlašovacích údajů, které umožňují přístup k registru vyžádat. 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>

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.