Distribuire un'immagine Docker a un'istanza di Azure Container

Completato

Istanza di Azure Container è un servizio che carica ed esegue le immagini Docker su richiesta. Il servizio Istanza di Azure Container è in grado di recuperare un'immagine da un registro, ad esempio Docker Hub o Registro Azure Container.

L'organizzazione vuole usare Azure per eseguire le proprie app Web. Per questo motivo, è opportuno archiviare le immagini in Registro Azure Container ed eseguirle usando il servizio Istanza di Azure Container.

In questa unità si apprenderà come caricare un'immagine Docker in un Registro Azure Container. Si eseguirà quindi l'immagine usando il servizio Istanza di Azure Container.

Usare Registro Azure Container per archiviare un contenitore

Registro Azure Container è un servizio di hosting del registro offerto da Azure. Ogni risorsa di Registro Azure Container che si crea è un registro separato con un URL univoco. Questi registri sono privati, pertanto richiedono l'autenticazione per eseguire il push o pull delle immagini. Registro Azure Container viene eseguito nel cloud e offre livelli di scalabilità e disponibilità simili a quelli di altri servizi di Azure.

È possibile creare un registro tramite il portale di Azure o l'interfaccia della riga di comando (CLI) di Azure. È possibile usare Cloud Shell nel portale di Azure o in un'installazione locale dell'interfaccia della riga di comando di Azure. Tenere presente che è necessario creare un gruppo di risorse prima di poter creare il registro. Quando si crea un gruppo di risorse, è consigliabile scegliere l'area più vicina. In questo esempio il nome del gruppo di risorse è mygroup e la località è Stati Uniti occidentali.

Non è necessario eseguire uno dei comandi seguenti. come si vedrà nel prossimo esercizio.

Nota

È necessario un nome univoco per il contenitore. È possibile verificare se un nome è già in uso qui.

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

Diversi SKU offrono vari livelli di scalabilità e archiviazione.

I repository di Registro Azure Container sono privati, pertanto non supportano l'accesso non autenticato. Per eseguire il pull delle immagini da un repository di Registro Azure Container, usare il comando docker login e specificare l'URL del server di accesso per il registro. L'URL del server di accesso per un registro di Registro Azure Container ha il formato <nome_registro>.azurecr.io.

docker login myregistry.azurecr.io

L'accesso a Docker richiederà un nome utente e una password. Per trovare queste informazioni, accedere al portale di Azure e cercare le chiavi di accesso per il registro oppure eseguire il comando seguente.

az acr credential show --name myregistry --resource-group mygroup

Si esegue il push di un'immagine dal computer locale a un registro Docker tramite il comando docker push. Prima di eseguire il push di un'immagine, è necessario creare un alias per l'immagine che specifichi il repository e il tag creati dal registro Docker. Il nome del repository deve essere nel formato *<server_accesso>/<nome_immagine>:<tag/>. Usare il comando docker tag per eseguire questa operazione. L'esempio seguente crea un alias per l'immagine reservationsystem.

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

Se si esegue docker image ls, si noteranno due voci per l'immagine: una con il nome originale e la seconda con il nuovo alias.

Dopo aver eseguito il comando tag, è possibile caricare l'immagine nel registro in Registro Azure Container usando il comando seguente.

docker push myregistry.azurecr.io/reservationsystem:v2

Verificare che l'immagine sia stata caricata correttamente elencando i repository nel registro con il comando seguente.

az acr repository list --name myregistry --resource-group mygroup

È possibile anche elencare le immagini presenti nel registro con il comando acr repository show.

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

Nota

Si avranno almeno due tag per ogni immagine in un repository. Un tag è il valore specificato nel comando acr build (v1 nell'esempio precedente). L'altro è quello più recente. Ogni volta che si ricompila un'immagine, Registro Azure Container crea automaticamente il tag più recente come alias per la versione più recente dell'immagine.

Usare l'istanza di Azure Container per eseguire un'immagine

Il servizio di istanza di Azure Container è in grado di caricare un'immagine da Registro Azure Container e di eseguirla in Azure.

Per creare un'istanza di contenitore e avviare l'esecuzione dell'immagine, usando il comando az container create. Specificare il nome utente e la password per il registro nei parametri registry-username e registry-password. All'istanza verrà allocato un indirizzo IP. Accedere all'istanza con questo indirizzo IP. Se si preferisce fare riferimento all'istanza usando un'etichetta più intuitiva, è possibile specificare un nome DNS. Si noti che l'immagine viene specificata come un URL che fa riferimento al registro dell'utente (myregistry) nel servizio Registro Azure Container (azurecr.io). Se si usa Docker Hub o altri tipi di registro, sostituire questo URL con l'URL dell'immagine in tale registro.

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

Azure ospita l'istanza con un nome di dominio basato sull'etichetta DNS specificata. È possibile trovare il nome di dominio completo dell'istanza eseguendo una query sull'indirizzo IP dell'istanza.

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

È possibile accedere all'applicazione usando un Web browser. È possibile passare all'URL restituito da questo comando. Si apprenderà come nell'unità successiva.