Esercitazione: Distribuire e usare Registro contenitori di AzureTutorial: Deploy and use Azure Container Registry

Questa è la parte due di un'esercitazione in tre parti.This is part two of a three-part tutorial. Nella prima parte dell'esercitazione è stata creata un'immagine del contenitore Docker per un'applicazione Web Node.js.Part one of the tutorial created a Docker container image for a Node.js web application. In questa esercitazione si esegue il push dell'immagine in Registro contenitori di Azure.In this tutorial, you push the image to Azure Container Registry. Se l'immagine del contenitore non è ancora stata creata, tornare all'esercitazione 1: Creare un'immagine del contenitore.If you haven't yet created the container image, return to Tutorial 1 – Create container image.

Registro contenitori di Azure è il registro Docker privato in Azure.Azure Container Registry is your private Docker registry in Azure. In questa esercitazione si crea un'istanza di Registro contenitori di Azure nella sottoscrizione e quindi si esegue il push dell'immagine del contenitore creata in precedenza in tale istanza.In this tutorial, you create an Azure Container Registry instance in your subscription, then push the previously created container image to it. In questo articolo, che corrisponde alla seconda parte della serie, è possibile eseguire queste operazioni:In this article, part two of the series, you:

  • Creare un'istanza di Registro contenitori di AzureCreate an Azure Container Registry instance
  • Assegnare un tag all'immagine del contenitore per il Registro contenitori di AzureTag a container image for your Azure container registry
  • Caricare l'immagine nel registroUpload the image to your registry

Nell'articolo successivo, che corrisponde all'ultimo della serie, il contenitore viene distribuito dal registro privato a Istanze di contenitore di Azure.In the next article, the last in the series, you deploy the container from your private registry to Azure Container Instances.

Prima di iniziareBefore you begin

Per completare questa esercitazione, è necessario soddisfare i requisiti seguenti:You must satisfy the following requirements to complete this tutorial:

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.Azure CLI: You must have Azure CLI version 2.0.29 or later installed on your local computer. Eseguire az --version per trovare la versione.Run az --version to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.If you need to install or upgrade, see Install Azure CLI 2.0.

Docker: questa esercitazione presuppone una conoscenza di base dei concetti principali di Docker, come contenitori, immagini dei contenitore e comandi essenziali di docker.Docker: This tutorial assumes a basic understanding of core Docker concepts like containers, container images, and basic docker commands. Per una panoramica sui concetti fondamentali relativi a Docker e al contenitore, vedere Docker overview (Panoramica su Docker).For a primer on Docker and container basics, see the Docker overview.

Motore Docker: per completare questa esercitazione, è necessario che sia installato in locale il motore Docker.Docker Engine: To complete this tutorial, you need Docker Engine installed locally. Docker offre pacchetti che configurano l'ambiente Docker in macOS, Windows e Linux.Docker provides packages that configure the Docker environment on macOS, Windows, and 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.Because the Azure Cloud shell does not include the Docker daemon, you must install both the Azure CLI and Docker Engine on your local computer to complete this tutorial. Per questa esercitazione non è possibile usare Azure Cloud Shell.You cannot use the Azure Cloud Shell for this tutorial.

Creare un'istanza di Registro contenitori di AzureCreate Azure container registry

Prima di creare il registro contenitori, è necessario un gruppo di risorse in cui eseguirne la distribuzione.Before you create your container registry, you need a resource group to deploy it to. Un gruppo di risorse è una raccolta logica in cui vengono distribuite e gestite tutte le risorse di Azure.A resource group is a logical collection into which all Azure resources are deployed and managed.

Creare un gruppo di risorse con il comando az group create.Create a resource group with the az group create command. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroup nell'area eastus:In the following example, a resource group named myResourceGroup is created in the eastus region:

az group create --name myResourceGroup --location eastus

Dopo aver creato il gruppo di risorse, creare un'istanza di Registro contenitori di Azure con il comando az acr create.Once you've created the resource group, create an Azure container registry with the az acr create command. Il nome del registro contenitori deve essere univoco in Azure e contenere da 5 a 50 caratteri alfanumerici.The container registry name must be unique within Azure, and contain 5-50 alphanumeric characters. Sostituire <acrName> con un nome univoco per il registro:Replace <acrName> with a unique name for your registry:

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

Di seguito è riportato l'output di esempio (qui troncato) per una nuova istanza di Registro contenitori di Azure denominata mycontainerregistry082:Here's example output for a new Azure container registry named mycontainerregistry082 (shown here truncated):

$ az acr create --resource-group myResourceGroup --name mycontainerregistry082 --sku Basic --admin-enabled true
...
{
  "adminUserEnabled": true,
  "creationDate": "2018-03-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.The rest of the tutorial refers to <acrName> as a placeholder for the container registry name that you chose in this step.

Accedere al registro contenitoriLog in to container registry

È necessario accedere all'istanza del Registro contenitori di Azure prima di eseguire il push di immagini.You must log in to your Azure Container Registry instance before pushing images to it. Usare il comando az acr login per completare l'operazione.Use the az acr login command to complete the operation. È necessario specificare il nome univoco scelto per il registro contenitori al momento della creazione.You must provide the unique name you chose for the container registry when you created it.

az acr login --name <acrName>

Al termine, il comando restituisce Login Succeeded:The command returns Login Succeeded once completed:

$ az acr login --name mycontainerregistry082
Login Succeeded

Assegnare tag all'immagine del contenitoreTag container image

Per eseguire il push di un'immagine del contenitore in un registro privato come Registro contenitori di Azure, è prima necessario assegnare all'immagine un tag con il nome completo del server di accesso del registro.To push a container image to a private registry like Azure Container Registry, you must first tag the image with the full name of the registry's login server.

Per prima cosa, ottenere il nome completo del server di accesso dell'istanza di Registro contenitori di Azure.First, get the full login server name for your Azure container registry. Eseguire questo comando az acr show, sostituendo <acrName> con il nome del registro appena creato:Run the following az acr show command, and replace <acrName> with the name of registry you just created:

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

Se il nome del registro è mycontainerregistry082, ad esempio:For example, if your registry is named mycontainerregistry082:

$ 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:Now, display the list of your local images with the docker images command:

docker images

Insieme a tutte le altre immagini presenti nel computer, verrà visualizzata l'immagine aci-tutorial-app creata nell'esercitazione precedente:Along with any other images you have on your machine, you should see the aci-tutorial-app image you built in the previous tutorial:

$ 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 loginServer del registro contenitori.Tag the aci-tutorial-app image with the loginServer of your container registry. Aggiungere anche il tag :v1 alla fine del nome dell'immagine per indicarne il numero di versione.Also, add the :v1 tag to the end of the image name to indicate the image version number. Sostituire <acrLoginServer> con il risultato del comando az acr show eseguito in precedenza.Replace <acrLoginServer> with the result of the az acr show command you executed earlier.

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

Eseguire di nuovo docker images per verificare l'operazione di assegnazione di tag:Run docker images again to verify the tagging operation:

$ 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 contenitori di AzurePush image to Azure Container Registry

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.Now that you've tagged the aci-tutorial-app image with the full login server name of your private registry, you can push it to the registry with the docker push command. Sostituire <acrLoginServer> con il nome completo del server di accesso ottenuto nel passaggio precedente.Replace <acrLoginServer> with the full login server name you obtained in the earlier step.

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:The push operation should take a few seconds to a few minutes depending on your internet connection, and output is similar to the following:

$ 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 contenitori di AzureList images in Azure Container Registry

Per verificare che l'immagine di cui è appena stato eseguito il push si trovi effettivamente nell'istanza di Registro contenitori di Azure, visualizzare l'elenco delle immagini nel registro con il comando az acr repository list.To verify that the image you just pushed is indeed in your Azure container registry, list the images in your registry with the az acr repository list command. Sostituire <acrName> con il nome del registro contenitori.Replace <acrName> with the name of your container registry.

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

Ad esempio: For example:

$ 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.To see the tags for a specific image, use the az acr repository show-tags command.

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

L'output dovrebbe essere simile al seguente:You should see output similar to the following:

$ az acr repository show-tags --name mycontainerregistry082 --repository aci-tutorial-app --output table
Result
--------
v1

Passaggi successiviNext steps

In questa esercitazione è stata preparata un'istanza di Registro contenitori di Azure da usare con Istanze di contenitore di Azure ed è stato eseguito il push di un'immagine del contenitore nel registro.In this tutorial, you prepared an Azure container registry for use with Azure Container Instances, and pushed a container image to the registry. Sono stati completati i passaggi seguenti:The following steps were completed:

  • Distribuzione di un'istanza di Registro contenitori di AzureDeployed an Azure Container Registry instance
  • Assegnazione di un tag all'immagine del contenitore per il Registro contenitori di AzureTagged a container image for Azure Container Registry
  • Caricamento di un'immagine nel Registro contenitori di AzureUploaded an image to Azure Container Registry

Passare all'esercitazione successiva per apprendere come distribuire il contenitore in Azure usando Istanze di contenitore di Azure:Advance to the next tutorial to learn how to deploy the container to Azure using Azure Container Instances: