Introduzione a Docker e Compose per la definizione e l'esecuzione di un'applicazione multi-contenitore in AzureGet started with Docker and Compose to define and run a multi-container application in Azure

Con Compose si usa un file di testo semplice per definire un'applicazione costituita da più contenitori Docker.With Compose, you use a simple text file to define an application consisting of multiple Docker containers. Si avvia quindi l'applicazione mediante un unico comando che effettua le operazioni necessarie per distribuire l'ambiente definito.You then spin up your application in a single command that does everything to deploy your defined environment. Come esempio, questo articolo illustra come configurare rapidamente un blog WordPress con un database SQL MariaDB back-end in una macchina virtuale di Ubuntu.As an example, this article shows you how to quickly set up a WordPress blog with a backend MariaDB SQL database on an Ubuntu VM. È possibile usare Compose anche per configurare applicazioni più complesse.You can also use Compose to set up more complex applications.

Configurare una macchina virtuale Linux come host DockerSet up a Linux VM as a Docker host

È possibile usare diverse procedure di Azure e le immagini o i modelli di Resource Manager disponibili in Azure Markeplace per creare una macchina virtuale di Linux da configurare come host Docker.You can use various Azure procedures and available images or Resource Manager templates in the Azure Marketplace to create a Linux VM and set it up as a Docker host. Ad esempio, vedere Using the Docker VM Extension to deploy your environment (Uso dell'estensione di VM Docker per distribuire l'ambiente) per creare rapidamente una VM Ubuntu con l'estensione VM Docker di Azure tramite un modello di avvio rapido.For example, see Using the Docker VM Extension to deploy your environment to quickly create an Ubuntu VM with the Azure Docker VM extension by using a quickstart template.

Quando si usa l'estensione di VM Docker, la macchina virtuale viene automaticamente configurata come host Docker e Compose è già installato.When you use the Docker VM extension, your VM is automatically set up as a Docker host and Compose is already installed.

Creare un host Docker con l'interfaccia della riga di comando di Azure 2.0Create Docker host with Azure CLI 2.0

Installare la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e accedere a un account Azure tramite il comando az login.Install the latest Azure CLI 2.0 and log in to an Azure account using az login.

Innanzitutto, creare un gruppo di risorse per l'ambiente di Docker con il comando az group create.First, create a resource group for your Docker environment 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. Specificare i propri valori univoci per newStorageAccountName, adminUsername, adminPassword e dnsNameForPublicIP:Provide your own unique values for newStorageAccountName, adminUsername, adminPassword, and dnsNameForPublicIP:

az group deployment create --resource-group myResourceGroup \
  --parameters '{"newStorageAccountName": {"value": "mystorageaccount"},
    "adminUsername": {"value": "azureuser"},
    "adminPassword": {"value": "P@ssw0rd!"},
    "dnsNameForPublicIP": {"value": "mypublicdns"}}' \
  --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. Al termine della distribuzione, procedere al passaggio successivo per configurare SSH sulla macchina virtuale.Once the deployment is finished, move to next step to SSH to your VM.

Facoltativamente, per restituire il controllo al prompt e per consentire la distribuzione continua in background, aggiungere il flag --no-wait al comando precedente.Optionally, to instead return control to the prompt and let the deployment continue in the background, add the --no-wait flag to the preceding command. Questo processo consente di eseguire altre operazioni nell'interfaccia della riga di comando mentre la distribuzione continua per alcuni minuti.This process allows you to perform other work in the CLI while the deployment continues for a few minutes. È possibile visualizzare i dettagli sullo stato dell'host Docker con il comando az vm show.You can then view details about the Docker host status with az vm show. 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:

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

Quando questo comando restituisce Succeeded, la distribuzione è stata completata ed è possibile configurare SSH sulla macchina virtuale nel passaggio seguente.When this command returns Succeeded, the deployment has finished and you can SSH to the VM in the following step.

Verificare che Compose sia installatoVerify that Compose is installed

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. Specificare il proprio nome DNS, come illustrato di seguito:Provide your own DNS name as follows:

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

Per verificare l'installazione di Compose nella macchina virtuale, eseguire il comando seguente:To check that Compose is installed on the VM, run the following command:

docker-compose --version

Si ottiene un output simile a docker-compose 1.6.2, build 4d72027.You see output similar to docker-compose 1.6.2, build 4d72027.

Suggerimento

Se è stato usato un altro metodo per creare un host Docker ed è necessario installare Compose manualmente, vedere la Compose documentation(Documentazione di Compose).If you used another method to create a Docker host and need to install Compose yourself, see the Compose documentation.

Creare un file di configurazione docker-compose.ymlCreate a docker-compose.yml configuration file

In seguito viene creato un file docker-compose.yml , che è semplicemente un file di configurazione di testo, per definire i contenitori Docker ed eseguirli nella macchina virtuale.Next you create a docker-compose.yml file, which is just a text configuration file, to define the Docker containers to run on the VM. Il file specifica l'immagine da eseguire su ciascun contenitore (o può essere una compilazione da un file Docker), le variabili d'ambiente, le dipendenze necessarie, le porte e i collegamenti tra i contenitori.The file specifies the image to run on each container (or it could be a build from a Dockerfile), necessary environment variables and dependencies, ports, and the links between containers. Per informazioni dettagliate sulla sintassi dei file YML, vedere Compose file reference(Informazioni di riferimento sui file di Compose).For details on yml file syntax, see Compose file reference.

Creare un file docker-compose.yml.Create a docker-compose.yml file. Usare un editor di testo per aggiungere dati al file.Use your favorite text editor to add some data to the file. L'esempio seguente crea il file con un prompt per sensible-editor per la selezione dell'editor da usare:The following example creates the file with a prompt for sensible-editor to pick an editor that you wish to use:

sensible-editor docker-compose.yml

Incollare l'esempio seguente nel file di Docker Compose.Paste the following example into your Docker Compose file. Questa configurazione utilizza le immagini del Registro di sistema DockerHub per installare WordPress (il sistema di creazione blog e gestione del contenuto open source) e un database SQL MariaDB back-end collegato.This configuration uses images from the DockerHub Registry to install WordPress (the open source blogging and content management system) and a linked backend MariaDB SQL database. Immettere il proprio valore MYSQL_ROOT_PASSWORD come segue:Enter your own MYSQL_ROOT_PASSWORD as follows:

wordpress:
  image: wordpress
  links:
    - db:mysql
  ports:
    - 80:80

db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: <your password>

Avviare i contenitori con ComposeStart the containers with Compose

Nella stessa directory del file docker-compose.yml eseguire il comando seguente (a seconda dell'ambiente, può essere necessario eseguire docker-compose usando sudo):In the same directory as your docker-compose.yml file, run the following command (depending on your environment, you might need to run docker-compose using sudo):

docker-compose up -d

Il comando avvia i contenitori Docker specificati in docker-compose.yml.This command starts the Docker containers specified in docker-compose.yml. L'esecuzione di questo passaggio richiede un paio di minuti.It takes a minute or two for this step to complete. L'output sarà simile all'esempio seguente:You see output similar to the following example:

Creating wordpress_db_1...
Creating wordpress_wordpress_1...
...

Nota

Assicurarsi di utilizzare l’opzione -d all'avvio in modo che i contenitori vengano eseguiti in background continuamente.Be sure to use the -d option on start-up so that the containers run in the background continuously.

Per verificare che i contenitori siano attivi, digitare docker-compose ps.To verify that the containers are up, type docker-compose ps. Dovrebbe essere visualizzata una schermata analoga alla seguente:You should see something like:

        Name                       Command               State         Ports
-----------------------------------------------------------------------------------
azureuser_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp
azureuser_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp

Ora è possibile connettersi a WordPress direttamente nella VM dalla porta 80.You can now connect to WordPress directly on the VM on port 80. Aprire un Web browser e immettere il nome DNS della VM (ad esempio http://mypublicdns.eastus.cloudapp.azure.com).Open a web browser and enter the DNS name of your VM (such as http://mypublicdns.eastus.cloudapp.azure.com). Viene visualizzata la schermata di avvio di WordPress, in cui è possibile completare l'installazione e iniziare a utilizzare l’applicazione.You should now see the WordPress start screen, where you can complete the installation and get started with the application.

Schermata iniziale di WordPress

Passaggi successiviNext steps

  • Vedere la Docker VM extension user guide (Guida dell'utente dell'estensione di VM Docker) per altre opzioni di configurazione di Docker e Compose nella VM Docker.Go to the Docker VM extension user guide for more options to configure Docker and Compose in your Docker VM. Ad esempio, un'opzione consiste nell'inserire il file YML di Compose (convertito in JSON) direttamente nella configurazione dell'estensione della VM Docker.For example, one option is to put the Compose yml file (converted to JSON) directly in the configuration of the Docker VM extension.
  • Per altri esempi di compilazione e distribuzione di app multi-contenitore, vedere Compose command-line reference (Informazioni di riferimento sulla riga di comando di Compose) e la guida dell'utente.Check out the Compose command-line reference and user guide for more examples of building and deploying multi-container apps.
  • Utilizzare un modello di Gestione risorse di Azure, quello proprio o uno fornito dalla community, per distribuire una macchina virtuale di Azure con Docker e un'applicazione configurata con Compose.Use an Azure Resource Manager template, either your own or one contributed from the community, to deploy an Azure VM with Docker and an application set up with Compose. Ad esempio, il modello Distribuire un blog WordPress con Docker utilizza Docker e Compose per distribuire rapidamente WordPress con un back-end MySQL in una VM Ubuntu.For example, the Deploy a WordPress blog with Docker template uses Docker and Compose to quickly deploy WordPress with a MySQL backend on an Ubuntu VM.
  • Provare a integrare Docker Compose con un cluster Docker Swarm.Try integrating Docker Compose with a Docker Swarm cluster. Per gli scenari, vedere Using Compose with Swarm (Uso di Swarm con Compose).See Using Compose with Swarm for scenarios.