Import imagí kontejneru do registru kontejneru
Image kontejnerů 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 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 image do registru kontejneru Azure má před používáním příkazů rozhraní příkazového řádku Dockeru následující výhody:
Vzhledem k tomu, že vaše klientské prostředí nepotřebuje místní instalaci Dockeru, naimportujte jakoukoli image kontejneru bez ohledu na podporovaný typ operačního systému.
Při importu imagí s více architekturami (například oficiální image Dockeru) se image pro všechny architektury a platformy uvedené v seznamu manifestů zkopírují.
Přístup k cílovému registru nemusí používat veřejný koncový bod registru.
Omezení
- Maximální počet manifestů pro importovaný obrázek je 50.
- Maximální velikost vrstvy pro image importovaná z veřejného registru je 2 GiB.
Pokud chcete importovat image kontejnerů, musíte v tomto článku spustit Azure CLI v Azure Cloud Shell 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 identické image kontejnerů napříč několika oblastmi Azure, Azure Container Registry podporuje také geografickou replikaci. Geografickou replikací registru (Premium úrovně služby) můžete z jednoho registru obsluhovat více oblastí se stejnými názvy i image a značek.
Důležité
Od ledna 2021 byly zavedeny změny importu image mezi dvěma registry kontejnerů Azure:
- Import do nebo z registru kontejneru Azure omezeného na síť vyžaduje, aby omezený registr povoloval přístup důvěryhodným službám, aby síť obešel. Ve výchozím nastavení je toto nastavení povolené a umožňuje import. Pokud toto nastavení není povolené v nově vytvořeném registru s privátním koncovým bodem nebo s pravidly brány firewall registru, import se nezdaří.
- Ve stávajícím registru kontejneru Azure omezeném na síť, který se používá jako zdroj nebo cíl importu, je povolení této funkce zabezpečení sítě volitelné, ale doporučuje se.
Předpoklady
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í roli, která umožňuje akci importImage). Viz Azure Container Registry role a oprávnění.
Import z veřejného registru
Import z Docker Hub
Pomocí příkazu az acr import můžete například importovat image s více architekturami z Docker Hub do registru hello-world:latest myregistry. Protože hello-world je oficiální image z Docker Hub, je tato image ve výchozím library úložišti. Do hodnoty parametru image zadejte název úložiště a volitelně --source značku. (Volitelně můžete image identifikovat podle hodnoty hash manifestu místo značky, 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 můžete ověřit, jestli je k této ibitové kopii přidruženo více az acr repository show-manifests manifestů:
az acr repository show-manifests \
--name myregistry \
--repository hello-world
Pokud máte účet Docker Hub,doporučujeme použít přihlašovací údaje při importu image z Docker Hub. Předejte Docker Hub uživatelské jméno a heslo nebo osobní přístupový token jako parametry az acr import do . Následující příklad importuje veřejnou image z úložiště v tensorflow Docker Hub pomocí Docker Hub přihlašovacích údajů:
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 z Microsoft Container Registry
Například naimportujte image ltsc2019 jádra Windows serveru z úložiště v windows 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 Azure Active Directory oprávnění.
Vaše identita musí mít Azure Active Directory 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 místo názvu přihlašovacího serveru registru.
Pokud zdrojový registr nebo cílový registr používá privátní koncový bod nebo pravidla brány firewall registru, ujistěte se, že omezený registr umožňuje 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 importuje image do registru myregistry ze zdrojového registru aci-helloworld:latest mysourceregistry, ve kterém je zakázaný přístup k veřejnému koncovému bodu registru. Do parametru zadejte ID prostředku zdrojového --registry registru. Všimněte --source si, že 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 importuje obrázek podle hodnoty hash manifestu (hodnota hash SHA-256 reprezentované jako sha256:... ) mí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
V následujícím příkladu je mysourceregistry v jiném předplatném než myregistry ve stejném tenantovi Active Directory. Do parametru zadejte ID prostředku zdrojového --registry registru. Všimněte --source si, že 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 samples/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ů objektu služby
Pokud chcete importovat z registru, ke které nemáte přístup pomocí integrovaných oprávnění Služby Active Directory, můžete ve zdrojovém registru použít přihlašovací údaje objektu služby (pokud jsou k dispozici). Zadejte appID a heslo objektu služby Active Directory s přístupem ACRPull ke zdrojovému registru. Použití objektu služby 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 Azure Active Directory, zadejte zdrojový registr podle názvu přihlašovacího serveru a zadejte přihlašovací údaje, které umožňují přístup pro čtení k registru.
Import mezi tenanty s uživatelským jménem a heslem
Můžete například použít token a heslo v rámci úložiště nebo APPID a heslo objektu služby Active Directory s přístupem 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ý token
Pokud chcete získat přístup ke zdrojovému registru pomocí identity ve zdrojovém tenantovi, která má oprávnění 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 do příkazu přístupový token jako az acr import heslo. Zdrojový registr je určený názvem 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 pro čtení k registru. Například si stáhněte 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í kontejneru do registru kontejneru 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říkazům az acr import.
Import image vám může pomoct přesunout obsah do registru kontejneru v jiné oblasti Azure, předplatném nebo tenantovi Azure AD. Další informace najdete v tématu Ruční přesun registru kontejneru do jiné oblasti.
Zjistěte, jak zakázat export artefaktů z registru kontejneru omezeného na síť.