Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Registro Azure Container è un servizio registro privato per la creazione, l'archiviazione e la gestione delle immagini di contenitori e degli artefatti correlati. In questa Guida rapida è stata creata un'istanza di Registro Azure Container con l'interfaccia della riga di comando di Azure. Usare quindi i comandi di Docker per eseguire il push di un'immagine del contenitore nel registro e infine eseguire il pull ed eseguire l'immagine dal registro.
Questa guida introduttiva richiede l'esecuzione dell'interfaccia della riga di comando di Azure (consigliata la versione 2.0.55 o successive). 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.
È anche necessario avere Docker installato localmente. Docker offre pacchetti che consentono di configurare facilmente Docker in qualsiasi sistema macOS, Windows o Linux.
Poiché Azure Cloud Shell non include tutti i componenti di Docker necessari, ovvero il daemon dockerd
, non è possibile usare Cloud Shell lo per questa guida rapida.
Creare un gruppo di risorse
Creare un gruppo di risorse con il comando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.
L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.
az group create --name myResourceGroup --location eastus
Configurare i parametri per un registro di contenitori
In questa guida introduttiva si crea un registro Standard , che è sufficiente per la maggior parte dei flussi di lavoro di Registro Azure Container. Per informazioni dettagliate sui livelli di servizio disponibili, vedere Livelli di servizio del registro contenitori.
Creare un'istanza di Registro Azure Container usando il comando az acr create. Il nome del registro deve essere univoco in Azure e contenere da 5 a 50 caratteri minuscoli alfanumerici. Nell'esempio seguente viene usato mycontainerregistry. Aggiornarlo a un valore univoco.
Configura l'opzione Etichetta Nome di Dominio (DNL)
La funzionalità DNL (Domain Name Label) rafforza la sicurezza impedendo attacchi di acquisizione del sottodominio dei nomi DNS del Registro di sistema. Questi attacchi si verificano quando un registro viene eliminato e un'altra entità riutilizza lo stesso nome del registro, causando potenzialmente il recupero dei riferimenti downstream dal registro ricreato dall'altra entità.
DNL risolve questo problema aggiungendo un hash univoco al nome DNS del Registro di sistema. In questo modo, anche se lo stesso nome del Registro di sistema viene riutilizzato da un'altra entità, i nomi DNS saranno diversi a causa dell'hash univoco. In questo modo, i riferimenti downstream sono protetti dal puntare per errore al registro ricreato dall'altra entità.
Quando si crea un registro dal comando az acr create , è possibile specificare il flag --dnl-scope
facoltativo e scegliere tra le opzioni disponibili:
-
Unsecure
: crea il nome DNS as-is, in base al nome del Registro di sistema ,ad esempiocontosoacrregistry.azurecr.io
. Questa opzione non include la protezione DNL. -
TenantReuse
: aggiunge un hash univoco in base al tenant e al nome del Registro di sistema, assicurando che il nome DNS sia univoco all'interno del tenant. -
SubscriptionReuse
: aggiunge un hash univoco in base alla sottoscrizione, al tenant e al nome del Registro di sistema, assicurando che il nome DNS sia univoco all'interno della sottoscrizione. -
ResourceGroupReuse
: aggiunge un hash univoco in base al gruppo di risorse, alla sottoscrizione, al tenant e al nome del Registro di sistema, assicurando che il nome DNS sia univoco all'interno del gruppo di risorse. -
NoReuse
: genera un nome DNS univoco con un hash univoco ogni volta che viene creato il Registro di sistema, indipendentemente da altri fattori, assicurando che il nome DNS sia sempre univoco.
Annotazioni
Configurazione non modificabile: l'ambito DNL selezionato durante la creazione del Registro di sistema è permanente e non può essere modificato in un secondo momento. Ciò garantisce un comportamento DNS coerente e impedisce interruzioni ai riferimenti downstream.
Implicazioni del nome DNS delle opzioni DNL
Formato nome DNS: per tutte le opzioni abilitate per DNL ad eccezione Unsecure
di , il nome DNS segue il formato registryname-hash.azurecr.io
, dove il trattino (-
) funge da delineatore hash. Per evitare conflitti, il trattino (-
) non è consentito nel nome del Registro di sistema. Ad esempio, un registro denominato contosoacrregistry
con ambito TenantReuse
DNL avrà un nome DNS come contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
.
Riferimenti downstream: il nome DNS può differire dal nome del Registro di sistema, richiedendo aggiornamenti nei file downstream, ad esempio Dockerfile, YAML Kubernetes e grafici Helm per riflettere il nome DNS completo con l'hash DNL. Ad esempio, se si vuole che il Dockerfile downstream faccia riferimento a un registro denominato contosoacrregistry
con l'ambito TenantReuse
DNL, è necessario aggiornare il riferimento a contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
nel Dockerfile downstream.
Configurare la modalità di autorizzazioni per assegnare i ruoli
Facoltativamente, è possibile usare il --role-assignment-mode
parametro per specificare la modalità di assegnazione dei ruoli del Registro di sistema.
Questa opzione determina il modo in cui il controllo degli accessi in base al ruolo e le assegnazioni di ruolo (RBAC) di Microsoft Entra vengono gestite per il Registro di sistema, incluso l'uso del controllo degli accessi in base all'attributo Microsoft Entra (ABAC) per le autorizzazioni del repository Microsoft Entra.
Specificare rbac-abac
per questo parametro per mantenere le assegnazioni di ruolo RBAC standard di Microsoft Entra, applicando facoltativamente le condizioni ABAC di Microsoft Entra per il controllo di accesso a livello di repository con granularità fine.
Per altre informazioni su questa opzione, vedere Microsoft Entra attribute-based access control (ABAC) per le autorizzazioni del repository.
Creare un registro contenitori
az acr create --resource-group myResourceGroup \
--name mycontainerregistry --sku Standard \
--role-assignment-mode 'rbac-abac' \
--dnl-scope TenantReuse
Quando il registro viene creato, si ottiene un output analogo al seguente:
{
"adminUserEnabled": false,
"creationDate": "2019-01-08T22:32:13.175925+00:00",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry",
"location": "eastus",
"loginServer": "mycontainerregistry-e7ggejfuhzhgedc8.azurecr.io",
"name": "mycontainerregistry",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Standard",
"tier": "Standard"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "Microsoft.ContainerRegistry/registries",
"roleAssignmentMode": "AbacRepositoryPermissions",
"autoGeneratedDomainNameLabelScope": "TenantReuse"
}
Prendere nota del valore di loginServer
nell'output, che corrisponde al nome del registro completo (tutto minuscolo). Nella parte restante di questa guida di avvio rapido, <registry-name>
è un segnaposto per il nome del registro contenitori e <login-server>
è un segnaposto per il nome del server di accesso del registro.
Suggerimento
In questa guida introduttiva si crea un registro Standard , che è sufficiente per la maggior parte dei flussi di lavoro di Registro Azure Container. Scegliere altri livelli per aumentare la velocità effettiva di archiviazione e immagine e funzionalità, ad esempio la connessione usando un endpoint privato. Per informazioni dettagliate sui livelli di servizio (SKU) disponibili, vedere Livelli di servizio del registro contenitori.
Accedere al registro
Prima di eseguire il push e il pull delle immagini del contenitore, è necessario accedere al registro. A questo scopo, usare il comando az acr login. Quando si accede con l'interfaccia della riga di comando di Azure, specificare solo il nome della risorsa del registro. Non usare il nome completo del server di accesso.
az acr login --name <registry-name>
Esempio:
az acr login --name mycontainerregistry
Il comando restituisce un messaggio Login Succeeded
al termine dell'esecuzione.
Eseguire il push dell'immagine nel registro
Per eseguire il push di un'immagine in un'istanza di Registro Azure Container, è prima di tutto necessario che sia disponibile un'immagine. Se non si dispone ancora di immagini del contenitore locali, eseguire il comando docker pull seguente per eseguire il pull di un'immagine pubblica esistente. Per questo esempio, eseguire il pull dell'immagine hello-world
da Registro Container Microsoft.
docker pull mcr.microsoft.com/hello-world
Prima di poter eseguire il push di un'immagine nel registro, è necessario contrassegnarla usando il tag Docker con il nome completo del server di accesso del Registro di sistema.
- Il formato del nome del server di accesso per i registri protetti DNL (Domain Name Label) con un hash del nome DNS univoco incluso è
mycontainerregistry-abc123.azurecr.io
. - Il formato del nome del server di accesso per i registri creati con l'opzione
Unsecure
DNL èmycontainerregistry.azurecr.io
.
Ad esempio, se il registro è stato creato con l'ambito Tenant Reuse
DNL, il server di login potrebbe assomigliare a mycontainerregistry-abc123.azurecr.io
con un hash nel nome DNS. Se il registro è stato creato con l'opzione Unsecure
DNL, il server di accesso apparirebbe come mycontainerregistry.azurecr.io
senza l'hash.
Per altre informazioni sulle opzioni DNL durante la creazione del Registro di sistema e sulle implicazioni del nome DNS, vedere Avvio rapido - Creare un registro nel portale.
Esempio: Assegnazione di tag a un'immagine prima del push
Contrassegna l'immagine usando il comando docker tag usando il server di accesso del Registro di sistema.
Assegnazione di tag all'immagine per un registro non DNL:
docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1
Assegnazione di tag all'immagine per un registro abilitato per DNL:
docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.azurecr.io/hello-world:v1
Usare infine docker push per eseguire il push dell'immagine nell'istanza del registro. Sostituire <login-server>
con il nome del server di accesso dell'istanza del registro. Questo esempio crea il repository hello-world che contiene l'immagine hello-world:v1
.
docker push <login-server>/hello-world:v1
Dopo il push dell'immagine nel registro contenitori, rimuovere l'immagine hello-world:v1
dall'ambiente Docker locale. Si noti che questo comando docker rmi non rimuove l'immagine dal repository hello-world nel registro Contenitori di Azure.
docker rmi <login-server>/hello-world:v1
Elencare le immagini del contenitore
L'esempio seguente elenca i repository presenti nel registro:
az acr repository list --name <registry-name> --output table
Risultato:
Result
----------------
hello-world
L'esempio seguente elenca i tag nel repository hello-world.
az acr repository show-tags --name <registry-name> --repository hello-world --output table
Risultato:
Result
--------
v1
Eseguire un'immagine dal registro
È possibile ora effettuare il pull ed eseguire l'immagine del contenitore hello-world:v1
dal registro contenitori usando docker run:
docker run <login-server>/hello-world:v1
Output di esempio:
Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Pulire le risorse
Quando il gruppo di risorse, il registro contenitori e le immagini del contenitore in esso archiviate non sono più necessari, è possibile usare il comando az group delete per rimuoverli.
az group delete --name myResourceGroup
Passaggi successivi
In questa guida di avvio rapido è stata creata un'istanza di Registro Azure Container con l'interfaccia della riga di comando di Azure, è stato eseguito il push di un'immagine del contenitore nel registro e quindi è stato eseguito il pull per eseguire l'immagine dal registro. Per maggiori informazioni su Registro Azure Container, passare alle relative esercitazioni.