Creare un ambiente Docker in Azure usando l'estensione di VM DockerCreate a Docker environment in Azure using the Docker VM extension

Docker è una nota piattaforma di creazione dell'immagine e gestione di contenitori che consente di lavorare rapidamente con contenitori in Linux.Docker is a popular container management and imaging platform that allows you to quickly work with containers on Linux. L'ambiente Azure offre vari modi per distribuire Docker a seconda delle proprie esigenze.In Azure, there are various ways you can deploy Docker according to your needs. Questo articolo è incentrato sull'uso dell'estensione di VM Docker e dei modelli di Azure Resource Manager con l'interfaccia della riga di comando di Azure 2.0.This article focuses on using the Docker VM extension and Azure Resource Manager templates with the Azure CLI 2.0. È possibile anche eseguire questi passaggi tramite l'interfaccia della riga di comando di Azure 1.0.You can also perform these steps with the Azure CLI 1.0.

Avviso

L'estensione di VM Docker di Azure per Linux è deprecata e verrà ritirata nel mese di novembre 2018.The Azure Docker VM extension for Linux is deprecated and will be retired November 2018. L'estensione installa semplicemente Docker. Le alternative disponibili, come cloud-init o l'estensione dello script personalizzata, offrono pertanto una soluzione più efficace per installare la versione di Docker desiderata.The extension merely installs Docker, so alternatives such as cloud-init or the Custom Script Extension are a better way to install the Docker version of choice. Per altre informazioni su come usare cloud-init, vedere Personalizzare una VM Linux con cloud-init.For more information on how to use cloud-init, see Customize a Linux VM with cloud-init.

Panoramica dell'estensione di VM Docker di AzureAzure Docker VM extension overview

L'estensione di VM Docker di Azure installa e configura il daemon Docker, il client Docker e Docker Compose nella macchina virtuale (VM) Linux.The Azure Docker VM extension installs and configures the Docker daemon, Docker client, and Docker Compose in your Linux virtual machine (VM). L'uso dell'estensione di VM Docker di Azure permette di ottenere un livello di controllo superiore e un maggior numero di funzionalità rispetto a quanto offerto dal semplice uso di Docker Machine o dalla creazione di un host Docker.By using the Azure Docker VM extension, you have more control and features than simply using Docker Machine or creating the Docker host yourself. Questi funzionalità aggiuntive, come ad esempio Docker Compose, rendono l'estensione di VM Docker di Azure la soluzione ideale per ambienti di sviluppo o di produzione più solidi.These additional features, such as Docker Compose, make the Azure Docker VM extension suited for more robust developer or production environments.

Per altre informazioni sui diversi metodi di distribuzione, incluso l'uso di Docker Machine e i servizi contenitore di Azure, vedere gli articoli seguenti:For more information about the different deployment methods, including using Docker Machine and Azure Container Services, see the following articles:

  • Per creare rapidamente il prototipo di un'applicazione, è possibile creare un singolo host di Docker usando Docker Machine.To quickly prototype an app, you can create a single Docker host using Docker Machine.
  • Per creare ambienti scalabili e pronti per la produzione che offrano altri strumenti di pianificazione e gestione, è possibile distribuire un cluster Kubernetes o Docker Swarm nei servizi contenitore di Azure.To build production-ready, scalable environments that provide additional scheduling and management tools, you can deploy a Kubernetes or Docker Swarm cluster on Azure Container Services.

Distribuire un modello con l'estensione di VM Docker di AzureDeploy a template with the Azure Docker VM extension

Usare un modello di avvio rapido esistente per creare una macchina virtuale Ubuntu che usa l'estensione di VM Docker di Azure per installare e configurare l'host Docker.Let's use an existing quickstart template to create an Ubuntu VM that uses the Azure Docker VM extension to install and configure the Docker host. Per visualizzare il modello, vedere Distribuzione semplice di una VM Ubuntu con Docker.You can view the template here: Simple deployment of an Ubuntu VM with Docker. È necessario aver installato l'interfaccia della riga di comando di Azure 2.0 e aver eseguito l'accesso a un account Azure tramite il comando az login.You need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login.

Creare prima un gruppo di risorse con az group create.First, create a resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:The following example creates a resource group named myResourceGroup in the eastus location:

az group create --name myResourceGroup --location eastus

Successivamente, distribuire una macchina virtuale con il comando az group deployment create che include l'estensione di VM Docker di Azure da questo modello di Azure Resource Manager su GitHub.Next, deploy a VM with az group deployment create that includes the Azure Docker VM extension from this Azure Resource Manager template on GitHub. Se richiesto, specificare i propri valori univoci per newStorageAccountName, adminUsername, adminPassword e dnsNameForPublicIP:When prompted, provide your own unique values for newStorageAccountName, adminUsername, adminPassword, and dnsNameForPublicIP:

az group deployment create --resource-group myResourceGroup \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/docker-simple-on-ubuntu/azuredeploy.json

L'operazione di distribuzione richiede alcuni minuti.It takes a few minutes for the deployment to finish.

Distribuire il primo contenitore NGINXDeploy your first NGINX container

Per visualizzare i dettagli della VM, incluso il nome DNS, usare az vm show:To view details of your VM, including the DNS name, use az vm show:

az vm show \
    --resource-group myResourceGroup \
    --name myDockerVM \
    --show-details \
    --query [fqdns] \
    --output tsv

SSH per il nuovo host Docker.SSH to your new Docker host. Fornire il nome utente e il nome DNS dei passaggi precedenti:Provide your own username and DNS name from the preceding steps:

ssh azureuser@mypublicdns.eastus.cloudapp.azure.com

Dopo aver effettuato l'accesso all'host Docker, eseguire un contenitore NGINX:Once logged in to the Docker host, let's run an NGINX container:

sudo docker run -d -p 80:80 nginx

L'output è simile all'esempio seguente quando l'immagine NGINX viene scaricata e un contenitore viene avviato:The output is similar to the following example as the NGINX image is downloaded and a container started:

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
a48df1751a97: Pull complete
8ddc2d7beb91: Pull complete
Digest: sha256:2ca2638e55319b7bc0c7d028209ea69b1368e95b01383e66dfe7e4f43780926d
Status: Downloaded newer image for nginx:latest
b6ed109fb743a762ff21a4606dd38d3e5d35aff43fa7f12e8d4ed1d920b0cd74

Per controllare lo stato dei contenitori in esecuzione sull'host Docker, fare come segue:Check the status of the containers running on your Docker host as follows:

sudo docker ps

L'output è simile all'esempio seguente, in cui viene mostrato che il contenitore NGINX è in esecuzione e viene eseguito l'inoltro alle porte TCP 80 e 443:The output is similar to the following example, showing that the NGINX container is running and TCP ports 80 and 443 and being forwarded:

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                         NAMES
b6ed109fb743        nginx               "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   adoring_payne

Per vedere il contenitore in azione, aprire un Web browser e immettere il nome DNS dell'host Docker:To see your container in action, open up a web browser and enter the DNS name of your Docker host:

Esecuzione di un contenitore ngnix

Riferimento al modello dell'estensione di VM Docker di AzureAzure Docker VM extension template reference

Nell'esempio precedente è stato usato un modello di avvio rapido esistente.The previous example uses an existing quickstart template. È anche possibile distribuire l'estensione di VM Docker di Azure con i propri modelli di Resource Manager.You can also deploy the Azure Docker VM extension with your own Resource Manager templates. Per farlo, aggiungere quanto segue ai modello di Resource Manager, definendo in modo appropriato vmName della VM:To do so, add the following to your Resource Manager templates, defining the vmName of your VM appropriately:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(variables('vmName'), '/DockerExtension'))]",
  "apiVersion": "2015-05-01-preview",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "DockerExtension",
    "typeHandlerVersion": "1.*",
    "autoUpgradeMinorVersion": true,
    "settings": {},
    "protectedSettings": {}
  }
}

Per altre procedure dettagliate relative all'uso di modelli di Resource Manager, vedere Panoramica di Azure Resource Manager.You can find more detailed walkthrough on using Resource Manager templates by reading Azure Resource Manager overview.

Passaggi successiviNext steps

Se lo si desidera, configurare la porta TCP del daemon Docker, comprendere le informazioni di sicurezza di Docker oppure distribuire i contenitori con Docker Compose.You may wish to configure the Docker daemon TCP port, understand Docker security, or deploy containers using Docker Compose. Per altre informazioni sull'estensione di VM Docker di Azure, vedere il Progetto GitHub.For more information on the Azure Docker VM Extension itself, see the GitHub project.

Per altre informazioni sulle opzioni di distribuzione di Docker aggiuntive in Azure, leggere:Read more information about the additional Docker deployment options in Azure: