Esercitazione: Distribuire un'applicazione contenitore in Istanze di Azure ContainerTutorial: Deploy a container application to Azure Container Instances

Questa è l'ultima esercitazione di una serie in tre parti.This is the final tutorial in a three-part series. Nelle parti precedenti della serie, è stata creata un'immagine del contenitore e ne è stato eseguito il push in Registro Azure Container.Earlier in the series, a container image was created and pushed to Azure Container Registry. Questo articolo completa la serie con la distribuzione del contenitore in Istanze di Azure Container.This article completes the series by deploying the container to Azure Container Instances.

In questa esercitazione:In this tutorial, you:

  • Distribuire il contenitore da Registro Azure Container a Istanze di Azure ContainerDeploy the container from Azure Container Registry to Azure Container Instances
  • Visualizzare l'applicazione in esecuzione nel browserView the running application in the browser
  • Visualizzare i log del contenitoreDisplay the container's logs

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.If you need to install or upgrade, see Install the Azure CLI.

Docker: questa esercitazione presuppone una conoscenza di base dei concetti principali di Docker, tra cui contenitori, immagini dei contenitori e comandi docker di base.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 il motore Docker sia installato in locale.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.

Distribuire il contenitore tramite l'interfaccia della riga di comando di AzureDeploy the container using the Azure CLI

In questa sezione si userà l'interfaccia della riga di comando di Azure per distribuire l'immagine che è stata creata nella prima esercitazione e di cui è stato eseguito il push in Registro Azure Container nella seconda esercitazione.In this section, you use the Azure CLI to deploy the image built in the first tutorial and pushed to Azure Container Registry in the second tutorial. Prima di procedere, assicurarsi di aver completato tali esercitazioni.Be sure you've completed those tutorials before proceeding.

Ottenere le credenziali del registroGet registry credentials

Quando si distribuisce un'immagine ospitata in un registro contenitori privato come quello creato nella seconda esercitazione, è necessario specificare le credenziali per accedere al registro.When you deploy an image that's hosted in a private container registry like the one created in the second tutorial, you must supply credentials to access the registry. Come mostrato in Eseguire l'autenticazione con Registro Azure Container da Istanze di Azure Container, una procedura consigliata per molti scenari consiste nel creare e configurare un'entità servizio di Azure Active Directory con autorizzazioni pull per il registro.As shown in Authenticate with Azure Container Registry from Azure Container Instances, a best practice for many scenarios is to create and configure an Azure Active Directory service principal with pull permissions to your registry. Vedere questo articolo per script di esempio per creare un'entità servizio con le autorizzazioni necessarie.See that article for sample scripts to create a service principal with the necessary permissions. Prendere nota dell'ID e della password dell'entità servizio.Take note of the service principal ID and service principal password. Usare queste credenziali quando si distribuisce il contenitore.You use these credentials when you deploy the container.

È anche necessario ottenere il nome completo del server di accesso del registro contenitori (sostituire <acrName> con il nome del registro):You also need the full name of the container registry login server (replace <acrName> with the name of your registry):

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

Distribuire il contenitoreDeploy container

Usare quindi il comando az container create per distribuire il contenitore.Now, use the az container create command to deploy the container. Sostituire <acrLoginServer> con il valore ottenuto dal comando precedente.Replace <acrLoginServer> with the value you obtained from the previous command. Sostituire <service-principal-ID> e <service-principal-password> con l'ID entità servizio e la password creati per accedere al registro.Replace <service-principal-ID> and <service-principal-password> with the service principal ID and password that you created to access the registry. Sostituire <aciDnsLabel> con il nome DNS desiderato.Replace <aciDnsLabel> with a desired DNS name.

az container create --resource-group myResourceGroup --name aci-tutorial-app --image <acrLoginServer>/aci-tutorial-app:v1 --cpu 1 --memory 1 --registry-login-server <acrLoginServer> --registry-username <service-principal-ID> --registry-password <service-principal-password> --dns-name-label <aciDnsLabel> --ports 80

Entro pochi secondi si dovrebbe ricevere una risposta iniziale da Azure.Within a few seconds, you should receive an initial response from Azure. Il valore --dns-name-label deve essere univoco all'interno dell'area di Azure in cui si crea l'istanza di contenitore.The --dns-name-label value must be unique within the Azure region you create the container instance. Se quando si esegue il comando viene visualizzato un messaggio di errore relativo all'etichetta del nome DNS, modificare il valore nel comando precedente.Modify the value in the preceding command if you receive a DNS name label error message when you execute the command.

Verificare lo stato di avanzamento della distribuzioneVerify deployment progress

Per visualizzare lo stato della distribuzione, usare il comando az container show:To view the state of the deployment, use az container show:

az container show --resource-group myResourceGroup --name aci-tutorial-app --query instanceView.state

Ripetere il comando az container show fino a quando lo stato cambia da In sospeso a In esecuzione, operazione che dovrebbe richiedere meno di un minuto.Repeat the az container show command until the state changes from Pending to Running, which should take under a minute. Quando il contenitore è In esecuzione, procedere al passaggio successivo.When the container is Running, proceed to the next step.

Visualizzare l'applicazione e i log dei contenitoriView the application and container logs

Dopo aver completato la distribuzione, visualizzare il nome di dominio completo (FQDN) del contenitore usando il comando az container show:Once the deployment succeeds, display the container's fully qualified domain name (FQDN) with the az container show command:

az container show --resource-group myResourceGroup --name aci-tutorial-app --query ipAddress.fqdn

Ad esempio: For example:

$ az container show --resource-group myResourceGroup --name aci-tutorial-app --query ipAddress.fqdn
"aci-demo.eastus.azurecontainer.io"

Per visualizzare l'applicazione in esecuzione, passare al nome DNS visualizzato in un browser a scelta:To see the running application, navigate to the displayed DNS name in your favorite browser:

App Hello World nel browser

È anche possibile visualizzare l'output del log del contenitore:You can also view the log output of the container:

az container logs --resource-group myResourceGroup --name aci-tutorial-app

Output di esempio:Example output:

$ az container logs --resource-group myResourceGroup --name aci-tutorial-app
listening on port 80
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET / HTTP/1.1" 200 1663 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET /favicon.ico HTTP/1.1" 404 150 "http://aci-demo.eastus.azurecontainer.io/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"

Pulire le risorseClean up resources

Se non è più necessaria alcuna delle risorse create in questa serie di esercitazioni, è possibile eseguire il comando az group delete per rimuovere il gruppo di risorse e tutte le risorse in esso contenute.If you no longer need any of the resources you created in this tutorial series, you can execute the az group delete command to remove the resource group and all resources it contains. Questo comando elimina il registro del contenitore creato, nonché il contenitore in esecuzione e tutte le risorse correlate.This command deletes the container registry you created, as well as the running container, and all related resources.

az group delete --name myResourceGroup

Passaggi successiviNext steps

In questa esercitazione è stato completato il processo di distribuzione del contenitore in Istanze di Azure Container.In this tutorial, you completed the process of deploying your container to Azure Container Instances. Sono stati completati i passaggi seguenti:The following steps were completed:

  • Il contenitore è stato distribuito da Registro Azure Container con l'interfaccia della riga di comando di AzureDeployed the container from Azure Container Registry using the Azure CLI
  • L'applicazione è stata visualizzata nel browserViewed the application in the browser
  • I log del contenitore sono stati visualizzatiViewed the container logs

Dopo aver acquisito queste nozioni di base, approfondire la conoscenza di Istanze di Azure Container, ad esempio in relazione al funzionamento dei gruppi di contenitori:Now that you have the basics down, move on to learning more about Azure Container Instances, such as how container groups work: