Creare un ambiente Docker in Azure usando l'estensione di macchina virtuale Docker con l'interfaccia della riga di comando di Azure 1.0Create a Docker environment in Azure using the Docker VM extension with the Azure CLI 1.0

Docker è una nota piattaforma di creazione dell'immagine e gestione di contenitori che consente di lavorare rapidamente con contenitori in Linux (e anche Windows).Docker is a popular container management and imaging platform that allows you to quickly work with containers on Linux (and Windows as well). 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 si concentra sull'uso dell'estensione di VM Docker e dei modelli di Azure Resource Manager.This article focuses on using the Docker VM extension and Azure Resource Manager templates.

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 gli ambienti più stabili ed estesi è possibile usare l'estensione di VM Docker di Azure che supporta anche Docker Compose per generare distribuzioni di contenitore coerenti.For larger, more stable environments, you can use the Azure Docker VM extension, which also supports Docker Compose to generate consistent container deployments. Questo articolo descrive come usare l'estensione di VM Docker di Azure.This article details using the Azure Docker VM extension.
  • Per creare ambienti scalabili e pronti per la produzione che offrono maggiori strumenti di pianificazione e gestione, è possibile distribuire un cluster Docker Swarm nei servizi contenitore di Azure.To build production-ready, scalable environments that provide additional scheduling and management tools, you can deploy a Docker Swarm cluster on Azure Container Services.

Versioni dell'interfaccia della riga di comando per completare l'attivitàCLI versions to complete the task

È possibile completare l'attività usando una delle versioni seguenti dell'interfaccia della riga di comando:You can complete the task using one of the following CLI versions:

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.

I modelli di Azure Resource Manager definiscono l'intera struttura dell'ambiente.Azure Resource Manager templates define the entire structure of your environment. I modelli consentono di creare e configurare le risorse, ad esempio le VM dell'host Docker, l'archiviazione, i controlli degli accessi in base al ruolo (RBAC) e la diagnostica.Templates allow you to create and configure resources such as the Docker host VMs, storage, Role-Based Access Controls (RBAC), and diagnostics. È possibile riusare questi modelli per creare distribuzioni aggiuntive in modo coerente.You can reuse these templates to create additional deployments in a consistent manner. Per altre informazioni su Azure Resource Manager e relativi modelli, vedere la Panoramica di Azure Resource Manager.For more information about Azure Resource Manager and templates, see Resource Manager overview.

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 installare e registrare l'interfaccia della riga di comando Azure più recente usando la modalità di Resource Manager nel modo seguente:You need the latest Azure CLI installed and logged in using the Resource Manager mode as follows:

azure config mode arm

Distribuire il modello con l'interfaccia della riga di comando di Azure, specificando l'URI del modello.Deploy the template using the Azure CLI, specifying the template URI. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione westus.The following example creates a resource group named myResourceGroup in the westus location. Usare il nome e la posizione del gruppo di risorse nel modo seguente:Use your own resource group name and location as follows:

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

Rispondere ai prompt di richiesta di rinominare l'account di archiviazione, fornire il nome utente e la password e specificare il nome DNS.Answer the prompts to name your storage account, provide a username and password, and provide a DNS name. L'output è simile all'esempio seguente:The output is similar to the following example:

info:    Executing command group create
+ Getting resource group myResourceGroup
+ Updating resource group myResourceGroup
info:    Updated resource group myResourceGroup
info:    Supply values for the following parameters
newStorageAccountName: mystorageaccount
adminUsername: azureuser
adminPassword: P@ssword!
dnsNameForPublicIP: mypublicidns
+ Initializing template configurations and parameters
+ Creating a deployment
info:    Created template deployment "azuredeploy"
data:    Id:                  /subscriptions/guid/resourceGroups/myResourceGroup
data:    Name:                myResourceGroup
data:    Location:            westus
data:    Provisioning State:  Succeeded
data:    Tags: null
data:
info:    group create command OK

L'interfaccia della riga di comando di Azure fa tornare l'utente al menu principale di prompt dopo alcuni secondi, ma l'host Docker viene comunque creato e configurato dall'estensione di VM Docker di Azure.The Azure CLI returns you to the prompt after only a few seconds, but your Docker host is still being created and configured by the Azure Docker VM extension. L'operazione di distribuzione richiede alcuni minuti.It takes a few minutes for the deployment to finish. È possibile visualizzare i dettagli sullo stato dell'host Docker con il comando azure vm show.You can view details about the Docker host status using the azure vm show command.

L'esempio seguente controlla lo stato della macchina virtuale denominata myDockerVM (il nome predefinito del modello, non modificare questo nome) che appartiene al gruppo di risorse myResourceGroup.The following example checks the status of the VM named myDockerVM (the default name from the template - don't change this name) in the resource group named myResourceGroup. Immettere il nome del gruppo di risorse creato nel passaggio precedente:Enter the name of the resource group you created in the preceding step:

azure vm show --resource-group myResourceGroup --name myDockerVM

L'output del comando azure vm show sarà simile all'esempio seguente:The output of the azure vm show command is similar to the following example:

info:    Executing command vm show
+ Looking up the VM "myDockerVM"
+ Looking up the NIC "myVMNicD"
+ Looking up the public ip "myPublicIPD"
data:    Id                              :/subscriptions/guid/resourceGroups/myresourcegroup/providers/Microsoft.Compute/virtualMachines/MyDockerVM
data:    ProvisioningState               :Succeeded
data:    Name                            :MyDockerVM
data:    Location                        :westus
data:    Type                            :Microsoft.Compute/virtualMachines
[...]
data:
data:    Network Profile:
data:      Network Interfaces:
data:        Network Interface #1:
data:          Primary                   :true
data:          MAC Address               :00-0D-3A-33-D3-95
data:          Provisioning State        :Succeeded
data:          Name                      :myVMNicD
data:          Location                  :westus
data:            Public IP address       :13.91.107.235
data:            FQDN                    :mypublicdns.westus.cloudapp.azure.com
data:
data:    Diagnostics Instance View:
info:    vm show command OK

Nella parte superiore dell'output viene visualizzato il valore ProvisioningState della VM.Near the top of the output, you see the ProvisioningState of the VM. Quando viene visualizzato Succeeded, la distribuzione è stata completata ed è possibile usare SSH per la VM.When this displays Succeeded, the deployment has finished and you can SSH to the VM.

Verso la fine dell'output, FQDN visualizza il nome di dominio completo dell'host Docker.Towards the end of the output, FQDN displays the fully qualified domain name of your Docker host. Questo è l'FQDN che si usa per accedere tramite SSH all'host Docker nei passaggi successivi.This FQDN is what you use to SSH to your Docker host in the remaining steps.

Distribuire il primo contenitore nginxDeploy your first nginx container

Al termine della distribuzione, accedere tramite SSH al nuovo host Docker dal computer locale.Once the deployment has finished, SSH to your new Docker host from your local computer. Immettere il nome utente e l'FQDN nel modo seguente:Enter your own username and FQDN as follows:

ssh ops@mypublicdns.westus.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 FQDN dell'host Docker:To see your container in action, open up a web browser and enter the FQDN 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 questo scopo, aggiungere quanto segue ai modello di Resource Manager, definendo in modo appropriato il 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.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: