Condividi tramite


Guida introduttiva: Distribuire un'istanza di contenitore in Azure usando l'interfaccia della riga di comando di Azure

Usare Istanze di Azure Container per eseguire contenitori Docker serverless in Azure con semplicità e velocità. Distribuire un'applicazione in un'istanza di contenitore su richiesta quando non è necessaria una piattaforma di orchestrazione di contenitori completa come Azure Kubernetes Service.

In questa guida introduttiva si usa l'interfaccia della riga di comando di Azure per distribuire un contenitore Docker isolato e renderla disponibile con un nome di dominio completo (FQDN). Alcuni secondi dopo l'esecuzione di un singolo comando di distribuzione, è possibile passare all'applicazione in esecuzione nel contenitore:

Visualizzare un'app distribuita in Istanze di Azure Container nel browser

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Prerequisiti

  • Questa guida di avvio rapido richiede l'interfaccia della riga di comando di Azure versione 2.0.55 o successiva. Se si usa Azure Cloud Shell, la versione più recente è già installata.

    Avvertimento

    Procedura consigliata: le credenziali dell'utente passate tramite l'interfaccia della riga di comando vengono archiviate come testo normale nel back-end. L'archiviazione delle credenziali in testo normale è un rischio per la sicurezza; Microsoft consiglia ai clienti di archiviare le credenziali utente nelle variabili di ambiente dell'interfaccia della riga di comando per assicurarsi che vengano crittografate o trasformate quando archiviate nel back-end.

Creare un gruppo di risorse

Le istanze di Azure Container, come tutte le risorse di Azure, devono essere distribuite in un gruppo di risorse. I gruppi di risorse consentono di organizzare e gestire le risorse di Azure correlate.

Creare prima di tutto un gruppo di risorse denominato myResourceGroup nella località eastus con il comando az group create :

az group create --name myResourceGroup --location eastus

Creare un contenitore

Ora che si dispone di un gruppo di risorse, è possibile eseguire un contenitore in Azure. Per creare un'istanza di contenitore con l'interfaccia della riga di comando di Azure, specificare un nome del gruppo di risorse, un nome dell'istanza del contenitore e un'immagine del contenitore Docker al comando az container create . In questo argomento di avvio rapido viene usata l'immagine mcr.microsoft.com/azuredocs/aci-helloworld pubblica. Questa immagine contiene un pacchetto di una piccola app Web scritta in Node.js che fornisce una pagina HTML statica.

È possibile esporre i contenitori a Internet specificando una o più porte da aprire, un'etichetta del nome DNS o entrambe. In questo avvio rapido, si distribuisce un contenitore con un'etichetta di nome DNS in modo che la web app sia raggiungibile pubblicamente.

Eseguire un comando simile al seguente per avviare un'istanza del contenitore. Impostare un --dns-name-label valore univoco all'interno dell'area di Azure in cui si crea l'istanza. Se viene visualizzato un messaggio di errore "Etichetta del nome DNS non disponibile", provare un'etichetta del nome DNS diversa.

az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80 --os-type linux --memory 1.5 --cpu 1

Per distribuire il contenitore in una zona di disponibilità specifica, usare l'argomento --zone e specificare il numero di zona logica:

az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80 --os-type linux --memory 1.5 --cpu 1 --zone 1

Importante

Le distribuzioni di zona sono disponibili solo nelle aree che supportano le zone di disponibilità. Per verificare se l'area supporta le zone di disponibilità, vedere Elenco di aree di Azure.

Entro pochi secondi, si dovrebbe ottenere una risposta dall'interfaccia della riga di comando di Azure che indica che la distribuzione è stata completata. Controllare lo stato con il comando az container show :

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 stato di provisioning.

FQDN                               ProvisioningState
---------------------------------  -------------------
aci-demo.eastus.azurecontainer.io  Succeeded

Se il contenitore ProvisioningState è Succeeded, vai al relativo FQDN nel browser. Se viene visualizzata una pagina Web simile alla seguente, congratulazioni! È stata distribuita correttamente un'applicazione in esecuzione in un contenitore Docker in Azure.

Visualizzare un'app distribuita in Istanze di Azure Container nel browser

Se all'inizio l'applicazione non viene visualizzata, potrebbe essere necessario attendere alcuni secondi durante la propagazione del DNS, quindi provare ad aggiornare il browser.

Effettuare il pull dei log del contenitore

Quando è necessario risolvere i problemi relativi a un contenitore o all'applicazione eseguita (o visualizzarne semplicemente l'output), iniziare visualizzando i log dell'istanza del contenitore.

Recuperare i log dell'istanza del contenitore con il comando az container logs :

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.

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 flussi di output

Oltre a visualizzare i log, è possibile collegare i flussi di output standard e di errore standard locali a quelli del contenitore.

Eseguire prima di tutto il comando az container attach per collegare la console locale ai flussi di output del contenitore:

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

Una volta collegato, aggiorna il browser alcune volte per generare alcuni altri risultati. Al termine, puoi scollegare la tua console con Control+C. L'output dovrebbe essere simile all'esempio seguente:

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 risorse

Al termine dell'operazione con il contenitore, rimuoverlo usando il comando az container delete :

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

Per verificare che il contenitore sia stato eliminato, eseguire il comando az container list :

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

Il contenitore mycontainer non deve essere visualizzato nell'output del comando. Se non sono presenti altri contenitori nel gruppo di risorse, non viene visualizzato alcun output.

Se hai finito con il gruppo di risorse myResourceGroup e tutte le risorse in esso contenute, eliminalo utilizzando il comando az group delete:

az group delete --name myResourceGroup

Passaggi successivi

In questo argomento di avvio rapido è stata creata un'istanza di contenitore di Azure usando un'immagine Microsoft pubblica. Per provare a creare un'immagine del contenitore e a distribuirla da un Registro Azure Container privato, passare all'esercitazione su Istanze di Azure Container.

Per provare le opzioni per l'esecuzione di contenitori in un sistema di orchestrazione in Azure, vedere le guide di avvio rapido per il servizio Azure Kubernetes.