Esercitazione: Creare un Registro Azure Container ed eseguire il push di un'immagine del contenitore

Questa è la parte due di un'esercitazione in tre parti. Nella prima parte dell'esercitazione è stata creata un'immagine del contenitore Docker per un'applicazione Web Node.js. In questa esercitazione si esegue il push dell'immagine in Registro Azure Container. Se l'immagine del contenitore non è ancora stata creata, tornare all'esercitazione 1: Creare un'immagine del contenitore.

Registro Azure Container è il registro Docker privato in Azure. In questa esercitazione, la seconda della serie, vengono illustrate le attività seguenti:

  • Creare un'istanza di Registro Azure Container usando l'interfaccia della riga di comando di Azure
  • Assegnare un tag all'immagine del contenitore per il Registro Azure Container
  • Caricare l'immagine nel registro

Nell'articolo successivo, che corrisponde all'ultimo della serie, il contenitore viene distribuito dal registro privato a Istanze di Azure Container.

Prima di iniziare

Per completare questa esercitazione, è necessario soddisfare i requisiti seguenti:

Interfaccia della riga di comando di Azure: è necessario che nel computer locale sia installata la versione 2.0.29 o successiva dell'interfaccia della riga di comando di Azure. 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.

Docker: questa esercitazione presuppone una conoscenza di base dei concetti principali di Docker, tra cui contenitori, immagini dei contenitori e comandi docker di base. Per una panoramica dei concetti fondamentali relativi a Docker e ai contenitori, vedere Docker overview (Panoramica di Docker).

Docker: per completare questa esercitazione, è necessario installare Docker localmente. Docker offre pacchetti per la configurazione dell'ambiente Docker in macOS, Windows e Linux.

Importante

Poiché Azure Cloud Shell non include il daemon Docker, per completare questa esercitazione è necessario installare nel computer locale sia l'interfaccia della riga di comando di Azure che il motore Docker. Per questa esercitazione non è possibile usare Azure Cloud Shell.

Creare un'istanza di Registro Azure Container

Prima di creare il registro contenitori, è necessario un gruppo di risorse in cui eseguirne la distribuzione. Un gruppo di risorse è una raccolta logica in cui vengono distribuite e gestite tutte le risorse di Azure.

Creare un gruppo di risorse con il comando az group create. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroup nell'area eastus:

az group create --name myResourceGroup --location eastus

Dopo aver creato il gruppo di risorse, creare un'istanza di Registro Azure Container con il comando az acr create. Il nome del registro contenitori deve essere univoco in Azure e contenere da 5 a 50 caratteri alfanumerici. Sostituire <acrName> con un nome univoco per il registro:

az acr create --resource-group myResourceGroup --name <acrName> --sku Basic

Ecco l'output parziale per una nuova istanza di Registro Azure Container denominata mycontainerregistry082:

{
  "creationDate": "2020-07-16T21:54:47.297875+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry082",
  "location": "eastus",
  "loginServer": "mycontainerregistry082.azurecr.io",
  "name": "mycontainerregistry082",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

Nel resto dell'esercitazione viene usato <acrName> come segnaposto per il nome del registro contenitori scelto in questo passaggio.

Accedere al registro contenitori

È necessario accedere all'istanza di Registro Azure Container prima di eseguire il push di immagini. Usare il comando az acr login per completare l'operazione. È necessario specificare il nome univoco scelto per il registro contenitori al momento della creazione.

az acr login --name <acrName>

Ad esempio:

az acr login --name mycontainerregistry082

Al termine, il comando restituisce Login Succeeded:

Login Succeeded

Assegnare tag all'immagine del contenitore

Per eseguire il push di un'immagine del contenitore in un registro privato come Registro Azure Container, è prima necessario assegnare all'immagine un tag con il nome completo del server di accesso del registro.

Per prima cosa, ottenere il nome completo del server di accesso dell'istanza di Registro Azure Container. Eseguire questo comando az acr show, sostituendo <acrName> con il nome del registro appena creato:

az acr show --name <acrName> --query loginServer --output table

Se il nome del registro è mycontainerregistry082, ad esempio:

az acr show --name mycontainerregistry082 --query loginServer --output table
Result
------------------------
mycontainerregistry082.azurecr.io

Visualizzare quindi l'elenco delle immagini locali con il comando docker images:

docker images

Insieme a tutte le altre immagini presenti nel computer, verrà visualizzata l'immagine aci-tutorial-app creata nell'esercitazione precedente:

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 minutes ago    68.1 MB

Applicare all'immagine aci-tutorial-app il tag del server di accesso del registro contenitori. Aggiungere anche il tag :v1 alla fine del nome dell'immagine per indicarne il numero di versione. Sostituire <acrLoginServer> con il risultato del comando az acr show eseguito in precedenza.

docker tag aci-tutorial-app <acrLoginServer>/aci-tutorial-app:v1

Eseguire di nuovo docker images per verificare l'operazione di assegnazione di tag:

docker images
REPOSITORY                                            TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app                                      latest    5c745774dfa9    39 minutes ago    68.1 MB
mycontainerregistry082.azurecr.io/aci-tutorial-app    v1        5c745774dfa9    7 minutes ago     68.1 MB

Eseguire il push dell'immagine in Registro Azure Container

Dopo aver assegnato all'immagine aci-tutorial-app il tag con il nome completo del server di accesso del registro privato, è possibile eseguire il push dell'immagine nel registro con il comando docker push. Sostituire <acrLoginServer> con il nome completo del server di accesso ottenuto nel passaggio precedente.

docker push <acrLoginServer>/aci-tutorial-app:v1

L'operazione push dovrebbe richiedere da alcuni secondi a qualche minuto a seconda della connessione Internet e l'output è simile al seguente:

docker push mycontainerregistry082.azurecr.io/aci-tutorial-app:v1
The push refers to a repository [mycontainerregistry082.azurecr.io/aci-tutorial-app]
3db9cac20d49: Pushed
13f653351004: Pushed
4cd158165f4d: Pushed
d8fbd47558a8: Pushed
44ab46125c35: Pushed
5bef08742407: Pushed
v1: digest: sha256:ed67fff971da47175856505585dcd92d1270c3b37543e8afd46014d328f05715 size: 1576

Elencare le immagini in Registro Azure Container

Per verificare che l'immagine di cui è appena stato eseguito il push si trovi effettivamente nell'istanza di Registro Azure Container, visualizzare l'elenco delle immagini nel registro con il comando az acr repository list. Sostituire <acrName> con il nome del registro contenitori.

az acr repository list --name <acrName> --output table

Ad esempio:

az acr repository list --name mycontainerregistry082 --output table
Result
----------------
aci-tutorial-app

Per visualizzare i tag per un'immagine specifica, usare il comando az acr repository show-tags.

az acr repository show-tags --name <acrName> --repository aci-tutorial-app --output table

L'output dovrebbe essere simile al seguente:

--------
v1

Passaggi successivi

In questa esercitazione è stata preparata un'istanza di Registro Azure Container da usare con Istanze di Azure Container ed è stato eseguito il push di un'immagine del contenitore nel registro. Sono stati completati i passaggi seguenti:

  • Creazione di un'istanza di Registro Azure Container usando l'interfaccia della riga di comando di Azure
  • Assegnazione di un tag all'immagine del contenitore per Registro Azure Container
  • Caricamento di un'immagine in Registro Azure Container

Passare all'esercitazione successiva per apprendere come distribuire il contenitore in Azure usando Istanze di Azure Container: