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 supporta molti scenari comuni di copia di immagini e altri artefatti da un registro esistente:
Importazione immagini da un registro pubblico
Importare immagini o artefatti OCI, inclusi i grafici Helm 3 da un altro registro Contenitori di Azure, nello stesso tenant o in una sottoscrizione o 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:
Se l'ambiente client non necessita di un'installazione locale di Docker, è possibile importare qualsiasi immagine del contenitore, indipendentemente dal tipo di sistema operativo supportato.
Se 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.
Se si ha accesso al Registro di sistema di destinazione, non è necessario 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 utilizzando 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. La replica geografica di un registro (è necessario un livello di servizio Premium) consente di servire più aree con nomi di immagine e di tag identici da un unico 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 di contenitori Azure con restrizioni di rete richiede che il registro con restrizioni consenta l'accesso da parte di servizi affidabili per bypassare 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 in atto, 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 occorre disporre di un'identità con autorizzazioni di scrittura sul registro di destinazione (almeno con ruolo di Collaboratore o con un ruolo personalizzato che consenta l'azione importImage). Vedere Ruoli e autorizzazioni di Registro Azure Container.
Importazione da un registro pubblico
Importante
L'importazione da un registro pubblico a un registro di contenitori Azure con restrizioni di rete richiede che il registro con restrizioni consenta l'accesso da parte di servizi affidabili per bypassare 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 in atto, 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 più manifesti siano associati a questa immagine 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 da Docker Hub. Passare il nome utente Docker Hub e la password o una token di accesso personale come parametri a az acr import
. L'esempio seguente importa un'immagine pubblica dal repository tensorflow
nel Docker Hub usando le relative credenziali:
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 di Windows Server Core ltsc2019
dal repository windows
nel registro contenitori di Microsoft.
az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019
Importare da Registro Azure Container nello stesso tenant Progettazione applicazioni
È possibile importare un'immagine da un registro contenitori di Azure nello stesso tenant Progettazione applicazioni usando le autorizzazioni integrate di Microsoft Entra.
L'identità deve disporre delle autorizzazioni di Microsoft Entra per leggere dal registro di origine (ruolo Lettore) e importare nel registro di destinazione (almeno con ruolo di Collaboratore o con un ruolo personalizzato che consenta 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 è disabilitato. Se l'accesso pubblico è disabilitato, specificare il Registro di sistema di origine in base all'ID della risorsa anziché al nome del server di accesso del Registro di sistema.
Il Registro di sistema di origine e/o il Registro di sistema di destinazione con un endpoint privato o regole del firewall del Registro di sistema devono garantire 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 parametro --source
specifica solo il tag e il repository di origine, non il nome del server di accesso al registro.
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 far sì 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 parametro --source
specifica solo il tag e il repository di origine, non il nome del server di accesso al registro.
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 immagini da un registro a cui non è possibile accedere mediante le autorizzazioni di Active Directory integrate, si possono usare le credenziali dell'entità servizio (se disponibili) per il registro 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 Registro Azure Container in tenant Progettazione applicazioni differente
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 fornire le credenziali che consentono l'accesso pull al Registro di sistema.
- L'importazione tra tenant tramite il Registro di sistema disabilitato per l'accesso pubblico non è supportata.
Importazione tra tenant con nome utente e password
Ad esempio, utilizzare un token e una password di accesso al repository oppure l'ID app e la password di un'entità servizio di Active Directory con accesso ACRPull al registro 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
- L'importazione tra tenant tramite il Registro di sistema disabilitato per l'accesso pubblico non è supportata.
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 comando az acr import
. Il Registro di sistema di origine specifica il 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>
Importazione da un registro contenitori privato non di Azure
Per importare un'immagine da un registro privato non Azure, specificare credenziali che consentano l'accesso pull al registro. 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 diversa di Azure, in una sottoscrizione o in un tenant Microsoft Entra. Per altre informazioni, vedere Spostare manualmente un registro contenitori in un'altra area.
Disabilitare l'esportazione degli artefatti da un registro contenitori con restrizioni di rete.