Guida introduttiva: Distribuire un'istanza di contenitore in Azure con l'interfaccia della riga di comando di AzureQuickstart: Deploy a container instance in Azure using the Azure CLI

Il servizio Istanze di Azure Container consente di eseguire contenitori Docker serverless in Azure in modo semplice e rapido.Use Azure Container Instances to run serverless Docker containers in Azure with simplicity and speed. Distribuire un'applicazione in un'istanza di contenitore su richiesta quando non è necessaria una piattaforma di orchestrazione di contenitori completa come il servizio Azure Kubernetes.Deploy an application to a container instance on-demand when you don't need a full container orchestration platform like Azure Kubernetes Service.

In questo argomento di avvio rapido viene usata l'interfaccia della riga di comando di Azure per distribuire un contenitore Docker isolato e renderne disponibile l'applicazione con un nome di dominio completo (FQDN).In this quickstart, you use the Azure CLI to deploy an isolated Docker container and make its application available with a fully qualified domain name (FQDN). Pochi secondi dopo aver eseguito un singolo comando di distribuzione, è possibile passare all'applicazione in esecuzione nel contenitore:A few seconds after you execute a single deployment command, you can browse to the application running in the container:

App distribuita in Istanze di Azure Container visualizzata nel browser

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Aprire Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattiva ospitato in Azure e usato tramite il browser.Azure Cloud Shell is an interactive shell environment hosted in Azure and used through your browse. Azure Cloud Shell consente di usare la shell bash o PowerShell per eseguire una varietà di strumenti da usare con i servizi di Azure.Azure Cloud Shell allows you to use either bash or PowerShell shells to run a variety of tools to work with Azure services. Azure Cloud Shell è preinstallato con i comandi per consentire di riprodurre il contenuto di questo articolo senza dover installare strumenti nell'ambiente locale.Azure Cloud Shell comes pre-installed with the commands to allow you to run the content of this article without having to install anything on your local environment.

Per eseguire il codice contenuto in questo articolo in Azure Cloud Shell, aprire una sessione di Cloud Shell, usare il pulsante Copia in un blocco di codice per copiare il codice e incollarlo nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.To run any code contained in this article on Azure Cloud Shell, open a Cloud Shell session, use the Copy button on a code block to copy the code, and paste it into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS. Il testo incollato non viene eseguito automaticamente, ma occorre premere INVIO per eseguire il codice.Pasted text is not automatically executed, so press Enter to run code.

È possibile avviare Azure Cloud Shell con:You can launch Azure Cloud Shell with:

Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. Questa azione non copia automaticamente il testo in Cloud Shell.This doesn't automatically copy text to Cloud Shell. Esempio di Prova per Azure Cloud Shell
Aprire shell.azure.com nel browser.Open shell.azure.com in your browser. Pulsante di avvio di Azure Cloud ShellLaunch Azure Cloud Shell button
Selezionare il pulsante Cloud Shell nel menu nell'angolo superiore destro del portale di Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Pulsante Cloud Shell nel portale di Azure

Per completare questa guida introduttiva è possibile usare Azure Cloud Shell o un'installazione locale dell'interfaccia della riga di comando di Azure.You can use the Azure Cloud Shell or a local installation of the Azure CLI to complete this quickstart. Se si preferisce l'interfaccia locale, è consigliabile usare la versione 2.0.55 o successiva.If you'd like to use it locally, version 2.0.55 or later is recommended. 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 Azure CLI.

Creare un gruppo di risorseCreate a resource group

Le istanze di contenitore di Azure, analogamente a tutte le risorse di Azure, devono essere distribuite in un gruppo di risorse.Azure container instances, like all Azure resources, must be deployed into a resource group. I gruppi di risorse consentono di organizzare e gestire le risorse di Azure correlate.Resource groups allow you to organize and manage related Azure resources.

Per iniziare, creare un gruppo di risorse denominato myResourceGroup nell'area eastus con il comando az group create seguente:First, create a resource group named myResourceGroup in the eastus location with the following az group create command:

az group create --name myResourceGroup --location eastus

Creare un contenitoreCreate a container

Dopo aver creato il gruppo di risorse, è possibile eseguire un contenitore in Azure.Now that you have a resource group, you can run a container in Azure. Per creare un'istanza di contenitore con l'interfaccia della riga di comando di Azure, specificare il nome del gruppo di risorse, il nome dell'istanza di contenitore e l'immagine del contenitore Docker nel comando az container create.To create a container instance with the Azure CLI, provide a resource group name, container instance name, and Docker container image to the az container create command. In questo argomento di avvio rapido viene usata l'immagine mcr.microsoft.com/azuredocs/aci-helloworld pubblica.In this quickstart, you use the public mcr.microsoft.com/azuredocs/aci-helloworld image. In questa immagine è inclusa una piccola app Web scritta in Node.js che distribuisce una pagina HTML statica.This image packages a small web app written in Node.js that serves a static HTML page.

È possibile esporre i contenitori in Internet specificando una o più porte da aprire, un'etichetta del nome DNS o entrambi.You can expose your containers to the internet by specifying one or more ports to open, a DNS name label, or both. In questa guida introduttiva si distribuisce un contenitore con un'etichetta del nome DNS in modo che l'app Web sia raggiungibile pubblicamente.In this quickstart, you deploy a container with a DNS name label so that the web app is publicly reachable.

Per avviare un'istanza di contenitore, eseguire un comando simile al seguente.Execute a command similar to the following to start a container instance. Impostare un valore di --dns-name-label univoco all'interno dell'area di Azure in cui si crea l'istanza.Set a --dns-name-label value that's unique within the Azure region where you create the instance. Se si riceve il messaggio di errore "L'etichetta del nome DNS non è disponibile", provare con un'etichetta del nome DNS diversa.If you receive a "DNS name label not available" error message, try a different DNS name label.

az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80

Entro pochi secondi si dovrebbe ricevere una risposta dall'interfaccia della riga di comando di Azure che indica che è stata completata la distribuzione.Within a few seconds, you should get a response from the Azure CLI indicating that the deployment has completed. Controllarne lo stato usando il comando az container show:Check its status with the az container show command:

az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table

Quando si esegue il comando, vengono visualizzati il nome di dominio completo (FQDN) del contenitore e il relativo lo stato di provisioning.When you run the command, the container's fully qualified domain name (FQDN) and its provisioning state are displayed.

$ az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table
FQDN                               ProvisioningState
---------------------------------  -------------------
aci-demo.eastus.azurecontainer.io  Succeeded

Se il valore ProvisioningState del contenitore è Operazione completata, passare al relativo indirizzo FQDN nel browser.If the container's ProvisioningState is Succeeded, navigate to its FQDN in your browser. Se viene visualizzata una pagina Web simile all'immagine seguente, congratulazioni!If you see a web page similar to the following, congratulations! È stata completata la distribuzione di un'applicazione in esecuzione in un contenitore Docker in Azure.You've successfully deployed an application running in a Docker container to Azure.

Screenshot del browser che mostra l'applicazione in esecuzione in un'istanza di contenitore di Azure

Se inizialmente l'applicazione non viene visualizzata, può essere necessario attendere alcuni secondi il completamento della propagazione DNS, quindi provare ad aggiornare il browser.If at first the application isn't displayed, you might need to wait a few seconds while DNS propagates, then try refreshing your browser.

Effettuare il pull dei log del contenitorePull the container logs

Quando è necessario risolvere i problemi di un contenitore o dell'applicazione in esecuzione (o semplicemente visualizzarne l'output), iniziare visualizzando i log dell'istanza del contenitore.When you need to troubleshoot a container or the application it runs (or just see its output), start by viewing the container instance's logs.

Effettuare il pull dei log dell'istanza del contenitore con il comando az container logs:Pull the container instance logs with the az container logs command:

az container logs --resource-group myResourceGroup --name mycontainer

L'output visualizza i log per il contenitore e dovrebbe mostrare le richieste HTTP GET generate quando l'applicazione è stata visualizzata nel browser.The output displays the logs for the container, and should show the HTTP GET requests generated when you viewed the application in your browser.

$ az container logs --resource-group myResourceGroup --name mycontainer
listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

Collegare i flussi di outputAttach output streams

Oltre a visualizzare i log, è possibile collegare i flussi di errore e di output standard locali a quello del contenitore.In addition to viewing the logs, you can attach your local standard out and standard error streams to that of the container.

Per prima cosa, eseguire il comando az container attach per collegare la console locale ai flussi di output del contenitore:First, execute the az container attach command to attach your local console to the container's output streams:

az container attach --resource-group myResourceGroup --name mycontainer

Al termine, aggiornare il browser alcune volte per generare output aggiuntivo.Once attached, refresh your browser a few times to generate some additional output. Scollegare infine la console con Control+C.When you're done, detach your console with Control+C. L'output dovrebbe essere simile al seguente:You should see output similar to the following:

$ az container attach --resource-group myResourceGroup --name mycontainer
Container 'mycontainer' is in state 'Running'...
(count: 1) (last timestamp: 2019-03-21 17:27:20+00:00) pulling image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:24+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Created container
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Started container

Start streaming logs:
listening on port 80

::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:47:01 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.56 - - [21/Mar/2019:17:47:12 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

Pulire le risorseClean up resources

Quando il contenitore non è più necessario, rimuoverlo usando il comando az container delete:When you're done with the container, remove it using the az container delete command:

az container delete --resource-group myResourceGroup --name mycontainer

Per verificare che il contenitore sia stato eliminato, eseguire il comando az container list:To verify that the container has been deleted, execute the az container list command:

az container list --resource-group myResourceGroup --output table

Il contenitore mycontainer non deve essere visualizzato nell'output del comando.The mycontainer container should not appear in the command's output. Se nel gruppo di risorse non sono presenti altri contenitori, non viene visualizzato alcun output.If you have no other containers in the resource group, no output is displayed.

Se il gruppo di risorse myResourceGroup e tutte le risorse contenute non sono più necessari, eliminarli con il comando az group delete:If you're done with the myResourceGroup resource group and all the resources it contains, delete it with the az group delete command:

az group delete --name myResourceGroup

Passaggi successiviNext steps

In questo argomento di avvio rapido è stata creata un'istanza di contenitore di Azure usando un'immagine Microsoft pubblica.In this quickstart, you created an Azure container instance by using a public Microsoft image. Per provare a creare un'immagine del contenitore e a distribuirla da un registro contenitori di Azure privato, passare all'esercitazione su Istanze di Azure Container.If you'd like to build a container image and deploy it from a private Azure container registry, continue to the Azure Container Instances tutorial.

Per provare le opzioni per l'esecuzione di contenitori in un sistema di orchestrazione in Azure, vedere la guida introduttiva per il servizio Azure Kubernetes.To try out options for running containers in an orchestration system on Azure, see the Azure Kubernetes Service (AKS) quickstarts.