Importare immagini del contenitore in un registro contenitori
È possibile importare (copiare) facilmente immagini del contenitore in un registro Azure Container senza usare comandi di Docker. Ad esempio, è possibile importare immagini da un registro di sviluppo in un registro di produzione oppure copiare immagini di base da un registro pubblico.
Registro Azure Container gestisce diversi scenari comuni per copiare immagini e altri elementi da un registro esistente:
Importare immagini da un registro pubblico
Importare immagini o artefatti OCI, inclusi i grafici Helm 3 da un altro registro Azure Container, nella stessa sottoscrizione o in un tenant di Azure diverso
Importazione da un registro contenitori privato non di Azure
L'importazione di immagini in un registro Azure Container offre i vantaggi seguenti rispetto all'uso dei comandi dell'interfaccia della riga di comando di Docker:
Poiché l'ambiente client non richiede un'installazione docker locale, importare qualsiasi immagine del contenitore, indipendentemente dal tipo di sistema operativo supportato.
Quando si importano immagini multiarchitettura (ad esempio immagini ufficiali di Docker), vengono copiate le immagini di tutte le architetture e le piattaforme specificate nell'elenco di manifesti.
L'accesso al Registro di sistema di destinazione non deve usare l'endpoint pubblico del Registro di sistema.
Importante
- L'importazione di immagini richiede il supporto del Registro di sistema esterno RFC 7233. È consigliabile usare un registro che supporti gli intervalli RFC 7233 usando il comando az acr import con l'URI del Registro di sistema per evitare errori.
Limiti
- Il numero massimo di manifesti per un'immagine importata è 50.
- La dimensione massima del livello per un'immagine importata da un registro pubblico è 2 GiB.
Per importare immagini del contenitore seguendo le procedure di questo articolo, è necessario eseguire l'interfaccia della riga di comando di Azure in Azure Cloud Shell o localmente (si consiglia la versione 2.0.55 o una versione successiva). Eseguire az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Nota
Se occorre distribuire immagini del contenitore identiche tra più aree di Azure, Registro Azure Container supporta anche la replica geografica. Replicando geograficamente un registro (livello di servizio Premium necessario), è possibile gestire più aree con nomi di immagine e tag identici da un singolo registro.
Importante
Le modifiche apportate all'importazione di immagini tra due registri contenitori di Azure sono state introdotte a partire da gennaio 2021:
- L'importazione da o verso un registro Azure Container con restrizioni di rete richiede che il registro con restrizioni consenta l'accesso da parte di servizi attendibili per ignorare la rete. Per impostazione predefinita, l'impostazione è abilitata, consentendo l'importazione. Se l'impostazione non è abilitata in un registro appena creato con un endpoint privato o con regole del firewall del Registro di sistema, l'importazione avrà esito negativo.
- In un registro Azure Container con restrizioni di rete esistente usato come origine o destinazione di importazione, l'abilitazione di questa funzionalità di sicurezza di rete è facoltativa ma consigliata.
Prerequisiti
Se non si ha già un registro Azure Container, crearne uno. Per la procedura, vedere Avvio rapido: Creare un registro contenitori privato usando l'interfaccia della riga di comando di Azure.
Per importare un'immagine in un Registro Azure Container, l'identità deve disporre delle autorizzazioni di scrittura per il Registro di sistema di destinazione (almeno il ruolo Collaboratore o un ruolo personalizzato che consente l'azione importImage). Vedere Ruoli e autorizzazioni di Registro Azure Container.
Importazione da un registro pubblico
Importante
Per eseguire l'importazione da un registro pubblico a un registro Azure Container con restrizioni di rete, è necessario che il registro con restrizioni consenta l'accesso da parte di servizi attendibili per ignorare la rete. Per impostazione predefinita, l'impostazione è abilitata, consentendo l'importazione. Se l'impostazione non è abilitata in un registro appena creato con un endpoint privato o con regole del firewall del Registro di sistema, l'importazione avrà esito negativo.
Importare immagini dall'hub Docker
Usare ad esempio il comando az acr import per importare l'immagine multiarchitettura hello-world:latest
dall'hub Docker in un registro denominato myregistry. Poiché hello-world
è un'immagine ufficiale dell'hub Docker, si trova nel repository library
predefinito. Includere il nome del repository e, se si vuole, un tag nel valore del parametro dell'immagine --source
. Si può anche identificare un'immagine in base al relativo digest del manifesto invece che in base a un tag, in modo da garantire una particolare versione dell'immagine.
az acr import \
--name myregistry \
--source docker.io/library/hello-world:latest \
--image hello-world:latest
È possibile verificare che a questa immagine siano associati più manifesti eseguendo il comando az acr manifest list-metadata :
az acr manifest list-metadata \
--name hello-world \
--registry myregistry
Per importare un artefatto in base al digest senza aggiungere un tag:
az acr import \
--name myregistry \
--source docker.io/library/hello-world@sha256:abc123 \
--repository hello-world
Se si dispone di un account Docker Hub, è consigliabile usare le credenziali durante l'importazione di un'immagine dall'hub Docker. Passare il nome utente dell'hub Docker e la password o un token di accesso personale come parametri a az acr import
. L'esempio seguente importa un'immagine pubblica dal repository nell'hub tensorflow
Docker usando le credenziali dell'hub Docker:
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>
Importare immagini dal registro contenitori di Microsoft
Ad esempio, importare l'immagine ltsc2019
di Windows Server Core dal windows
repository in Registro Contenitori Microsoft.
az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019
Importare da un registro Azure Container nello stesso tenant di AD
È possibile importare un'immagine da un registro contenitori di Azure nello stesso tenant di AD usando le autorizzazioni integrate di Microsoft Entra.
L'identità deve disporre delle autorizzazioni di Microsoft Entra per la lettura dal Registro di sistema di origine (ruolo lettore) e per l'importazione nel Registro di sistema di destinazione (ruolo Collaboratore o ruolo personalizzato che consente l'azione importImage).
Il registro può trovarsi nella stessa sottoscrizione di Azure o in una sottoscrizione diversa nello stesso tenant di Active Directory.
L'accesso pubblico al Registro di sistema di origine può essere disabilitato. Se l'accesso pubblico è disabilitato, specificare il Registro di sistema di origine in base all'ID risorsa anziché al nome del server di accesso del Registro di sistema.
Se il Registro di sistema di origine e/o il Registro di sistema di destinazione dispone di un endpoint privato o regole del firewall del Registro di sistema, assicurarsi che il Registro di sistema con restrizioni consenta ai servizi attendibili di accedere alla rete.
Importare immagini da un registro nella stessa sottoscrizione
Ad esempio, importare l'immagine aci-helloworld:latest
dal registro di origine mysourceregistry a myregistry nella stessa sottoscrizione di Azure.
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld:latest \
--image aci-helloworld:latest
L'esempio seguente importa l'immagine aci-helloworld:latest
in myregistry da un registro di origine mysourceregistry in cui l'accesso all'endpoint pubblico del Registro di sistema è disabilitato. Specificare l'ID risorsa del registro di origine con il parametro --registry
. Si noti che il --source
parametro specifica solo il repository di origine e il tag, non il nome del server di accesso del Registro di sistema.
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
L'esempio seguente importa un'immagine in base al digest del manifesto (hash SHA-256, rappresentato come sha256:...
) anziché in base a un tag:
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg
Importare immagini da un registro in un'altra sottoscrizione
Nota
Per importare un'immagine da un registro a un altro, i registri di origine e di destinazione devono assicurarsi che entrambe le aree siano registrate per Registro Azure Container (ACR) nei provider di risorse della sottoscrizione.
Nell'esempio seguente mysourceregistry è in una sottoscrizione diversa da myregistry nello stesso tenant di Active Directory. Specificare l'ID risorsa del registro di origine con il parametro --registry
. Si noti che il --source
parametro specifica solo il repository di origine e il tag, non il nome del server di accesso del Registro di sistema.
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
Importare immagini da un registro usando le credenziali dell'entità servizio
Per importare da un Registro di sistema a cui non è possibile accedere usando le autorizzazioni di Active Directory integrate, è possibile usare le credenziali dell'entità servizio (se disponibile) nel Registro di sistema di origine. Specificare l'ID app e la password di un'entità servizio di Active Directory con accesso ACRPull al registro di origine. L'uso di un'entità servizio è utile per i sistemi di compilazione e altri sistemi automatici che devono importare immagini nel registro.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Importare da un registro Azure Container in un tenant di Active Directory diverso
Per importare da un registro contenitori di Azure in un tenant Microsoft Entra diverso, specificare il registro di origine in base al nome del server di accesso e specificare le credenziali che consentono l'accesso pull al Registro di sistema.
Importazione tra tenant con nome utente e password
Ad esempio, usare un token e una password con ambito repository o l'ID app e la password di un'entità servizio Active Directory con accesso ACRPull al Registro di sistema di origine.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Importazione tra tenant con token di accesso
Per accedere al Registro di sistema di origine usando un'identità nel tenant di origine con autorizzazioni del Registro di sistema, è possibile ottenere un token di accesso:
# 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
Nel tenant di destinazione passare il token di accesso come password al az acr import
comando. Il registro di origine viene specificato dal nome del server di accesso. Si noti che in questo comando non è necessario alcun nome utente:
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--password <access-token>
Nota
Il cross-tenant non funziona tra i cloud. Anche l'importazione tra tenant su endpoint privati non è supportata.
Importazione da un registro contenitori privato non di Azure
Importare un'immagine da un registro privato non di Azure specificando le credenziali che consentono l'accesso pull al Registro di sistema. Ad esempio, eseguire il pull di un'immagine da un registro privato di Docker:
az acr import \
--name myregistry \
--source docker.io/sourcerepo/sourceimage:tag \
--image sourceimage:tag \
--username <username> \
--password <password>
Passaggi successivi
Questo articolo ha illustrato come importare immagini del contenitore in un registro Azure Container da un registro pubblico o da un altro registro privato.
- Per altre opzioni di importazione di immagini, vedere la documentazione di riferimento sul comando az acr import.
L'importazione di immagini consente di spostare il contenuto in un registro contenitori in un'area di Azure diversa, in una sottoscrizione o in un tenant Microsoft Entra. Per altre informazioni, vedere Spostare manualmente un registro contenitori in un'altra area.
Informazioni su come disabilitare l'esportazione degli artefatti da un registro contenitori con restrizioni di rete.