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 máte přístup k cílovému registru, nevyžadujete 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 import
př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 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 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 přes veřejný přístup zakázaný registr se nepodporuje.
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
- Import mezi tenanty přes veřejný přístup zakázaný registr se nepodporuje.
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>
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.
- Další možnosti importu obrázků najdete v referenčních informacích k příkazu az acr import .
Import imagí vám může pomoct přesunout obsah do registru kontejneru v jiné oblasti Azure, předplatném nebo tenantovi Microsoft Entra. Další informace najdete v tématu Ruční přesun registru kontejneru do jiné oblasti.
Zakažte export artefaktů z registru kontejneru s omezeným přístupem k síti.