Introducción a Docker y Compose para definir y ejecutar una aplicación de contenedores múltiples en Azure

Con Compose, usará un archivo de texto simple para definir una aplicación compuesta de varios contenedores de Docker. Después, puede poner en marcha la aplicación con un solo comando que realiza todos los pasos para implementarla en el entorno definido. Como ejemplo, en este artículo se muestra cómo configurar rápidamente un blog de WordPress con una base de datos SQL MariaDB de back-end en una máquina virtual Ubuntu. También puede utilizar Compose para configurar aplicaciones más complejas.

Este artículo se probó por última vez el 14/2/2019 mediante Azure Cloud Shell y la versión 2.0.58 de la CLI de Azure.

Creación de un host de Docker con la CLI de Azure

Instale la última versión de la CLI de Azure e inicie sesión en una cuenta de Azure con az login.

En primer lugar, cree un grupo de recursos para su entorno de Docker con az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus:

az group create --name myDockerGroup --location eastus

Cree un archivo denominado cloud-init.txt y pegue la siguiente configuración. Escriba sensible-editor cloud-init.txt para crear el archivo y ver una lista de editores disponibles.

#include https://get.docker.com

Ahora cree una máquina virtual con el comando az vm create. Use el parámetro --custom-data para pasar su archivo de configuración cloud-init. Proporcione la ruta de acceso completa a la configuración de cloud-init.txt si guardó el archivo fuera de su directorio de trabajo actual. En el ejemplo siguiente se crea una máquina virtual denominada myDockerVM y abre el puerto 80 para el tráfico web.

az vm create \
    --resource-group myDockerGroup \
    --name myDockerVM \
    --image UbuntuLTS \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt
az vm open-port --port 80 \
    --resource-group myDockerGroup \
	--name myDockerVM

Transcurren unos minutos hasta que la máquina virtual se crea, los paquetes se instalan y la aplicación se inicia. Hay tareas en segundo plano que continúan ejecutándose después de que la CLI de Azure vuelve a abrir el símbolo del sistema. Cuando se haya creado la máquina virtual, anote el valor publicIpAddress mostrado por la CLI de Azure.

Instalación de Compose

SSH a la nueva máquina virtual de host Docker. Proporcione su propia dirección IP.

ssh azureuser@10.10.111.11

Instale Compose en la máquina virtual.

sudo apt install docker-compose

Creación de un archivo de configuración docker-compose.yml

Cree un archivo de configuración docker-compose.yml para definir los contenedores de Docker que ejecutar la máquina virtual. El archivo especifica la imagen que se ejecutará en cada contenedor, variables de entorno y dependencias necesarias, puertos y vínculos entre contenedores. Para más información sobre la sintaxis del archivo YML, consulte la referencia del archivo de Compose.

Cree un archivo docker-compose.yml. Use el editor de texto que prefiera para agregar algunos datos al archivo. El ejemplo siguiente crea el archivo con un mensaje sensible-editor para elegir el editor que desea usar.

sensible-editor docker-compose.yml

Pegue el ejemplo siguiente en el archivo de Docker Compose. Esta configuración usa imágenes del Registro de DockerHub para instalar WordPress (el sistema de administración de contenido y blogs de código abierto) y una base de datos SQL MariaDB de back-end vinculada. Escriba su propia MYSQL_ROOT_PASSWORD.

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

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

inicio de los contenedores con Compose

En el mismo directorio que el archivo docker-compose.yml, ejecute el comando siguiente (dependiendo de su entorno, quizás tenga que ejecutar docker-compose mediante sudo):

sudo docker-compose up -d

Este comando inicia los contenedores de Docker especificados en docker-compose.yml. Este paso tarda uno o dos minutos en completarse. Verá un resultado similar al siguiente:

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

Para comprobar que los contenedores están activos, escriba sudo docker-compose ps. Debería ver algo parecido a lo siguiente:

        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

Ahora puede conectarse a WordPress directamente en la máquina virtual a través del puerto 80. Abra un explorador web y escriba el nombre de la dirección IP de la máquina virtual. Ahora debería ver la pantalla de inicio de WordPress, donde se puede completar la instalación e iniciar la aplicación.

Pantalla de inicio de WordPress

Pasos siguientes

  • Consulte la referencia de línea de comandos de Compose y el manual del usuario para obtener más ejemplos de compilación e implementación de aplicaciones con varios contenedores.
  • Use una plantilla del Administrador de recursos de Azure, o bien una propia o una proporcionada por la comunidad, para implementar una VM de Azure con Docker y una aplicación configurada con Compose. Por ejemplo, la plantilla Implementación de un blog de WordPress con Docker usa Docker y Compose para implementar rápidamente WordPress con un back-end de MySQL en una máquina virtual de Ubuntu.
  • Pruebe a integrar Docker Compose con un clúster de Docker Swarm. Consulte Using Compose with Swarm (Uso de Compose con Swarm) para conocer distintos escenarios.