WindowsMacSoftwareConfiguraciónSeguridadProductividadLinuxAndroidRendimientoConfiguraciónApple Todo

Cómo usar Docker Compose en Linux

Editado 5 hace meses por ExtremeHow Equipo Editorial

DockerContenedoresDespliegue de AplicacionesDocker ComposeOrquestaciónConfiguraciónSecuencias de comandosDevOpsLínea de comandosMulti-Contenedor

Cómo usar Docker Compose en Linux

Traducción actualizada 5 hace meses

Docker Compose es una herramienta utilizada para definir y ejecutar aplicaciones Docker de múltiples contenedores. Con Docker Compose, puedes usar un archivo YAML para configurar los servicios de tu aplicación y luego puedes usar un solo comando para crear e iniciar todos los servicios desde tu configuración. Esto es increíblemente útil para trabajar con aplicaciones complejas que contienen muchos servicios vinculados. El propósito de esta guía es explicar cómo usar Docker Compose en Linux de una manera muy detallada.

Entendiendo Docker y Docker Compose

Antes de profundizar en Docker Compose, es importante entender qué es Docker. Docker es una plataforma que permite a los desarrolladores y administradores de sistemas empaquetar aplicaciones en contenedores, componentes ejecutables estandarizados que combinan el código fuente de la aplicación con las bibliotecas del sistema operativo y las dependencias necesarias para ejecutar ese código en cualquier entorno.

Docker Compose lleva esto un paso más allá al permitirte configurar e iniciar múltiples contenedores Docker como un solo servicio. Esto significa que puedes gestionar todas las dependencias de tu aplicación utilizando un archivo simple llamado docker-compose.yml. Este archivo contiene información sobre qué imagen ejecutar, qué puertos exponer, mapeos de volumen y más.

Configuración de Docker y Docker Compose en Linux

El primer paso para usar Docker Compose es asegurarte de que Docker esté instalado y en ejecución en tu máquina Linux. La mayoría de las distribuciones modernas de Linux incluyen Docker en sus repositorios oficiales, pero también puedes instalarlo desde el repositorio oficial de Docker para obtener la última versión.

# Actualiza el índice de paquetes apt e instala paquetes para permitir que apt use un repositorio sobre HTTPS
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y

# Añade la clave GPG oficial de Docker y verifica
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Configura el repositorio estable
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# Instala Docker CE
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

# Verifica la instalación de Docker
sudo docker run hello-world

Una vez que Docker está instalado, el siguiente paso es instalar Docker Compose. A diferencia de Docker, Compose es una herramienta separada. Puedes descargar Docker Compose desde la página de lanzamientos de GitHub.

# Descarga la versión estable actual de Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# Aplica permisos ejecutables al binario
sudo chmod +x /usr/local/bin/docker-compose

# Verifica que Docker Compose esté instalado correctamente
docker-compose --version

Entendiendo el archivo docker-compose.yml

El archivo docker-compose.yml es el núcleo del uso de Docker Compose. Aquí es donde defines todos tus servicios (esencialmente, los contenedores de tu aplicación) y cómo interactúan entre sí. La estructura del archivo docker-compose.yml es bastante sencilla. Por lo general, comienza definiendo la versión de Compose que se está utilizando, seguida de una lista de servicios.

Aquí hay un ejemplo básico de un archivo docker-compose.yml:

version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example

En el ejemplo anterior, el archivo compose está usando la versión 3.8. Define dos servicios, web y database. El servicio web utiliza la imagen de Nginx y asigna el puerto 80 del contenedor al puerto 80 del host. El servicio database utiliza la imagen de MySQL con la contraseña de root especificada.

Ejecutando aplicaciones con Docker Compose

Una vez que has configurado tu archivo docker-compose.yml, tu aplicación de múltiples servicios puede ejecutarse con un comando simple. Navega al directorio que contiene el archivo docker-compose.yml y ejecuta:

docker-compose up

El comando docker-compose up busca el archivo docker-compose.yml en el directorio actual, crea las imágenes requeridas si no están disponibles localmente e inicia los servicios definidos.

Si deseas ejecutar la aplicación en segundo plano (modo aislado), puedes usar la opción -d:

docker-compose up -d

Gestionando tu entorno Docker Compose

Docker Compose proporciona varios comandos para ayudarte a gestionar tu entorno:

  1. docker-compose ps: Muestra el estado de los servicios definidos en el archivo compose.
  2. docker-compose start: Inicia un contenedor existente para un servicio.
  3. docker-compose stop: Detiene los contenedores en ejecución, sin eliminarlos.
  4. docker-compose down: Detiene y elimina todos los contenedores definidos en el archivo docker-compose.yml.
  5. docker-compose logs: Recupera los registros de un servicio.

Usando volúmenes y redes en Docker Compose

Docker Compose también te permite definir volúmenes y redes en tu archivo docker-compose.yml. Los volúmenes se utilizan para preservar datos y las redes ayudan en la comunicación entre servicios.

Para definir un volumen, añade lo siguiente bajo la sección de Servicios:

services:
database:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:

Esta configuración crea un volumen nombrado db_data y lo monta en /var/lib/mysql dentro del contenedor del servicio de base de datos, que almacena datos de MySQL.

La red también se puede personalizar:

services:
frontend:
image: node:14
networks:
- frontend-network
backend:
image: node:14
networks:
- backend-network

networks:
frontend-network:
backend-network:

Escalando servicios con Docker Compose

Una característica poderosa de Docker Compose es la capacidad de escalar servicios. Esto es especialmente útil para simular condiciones más realistas en un entorno de desarrollo. Puedes escalar un servicio con la opción --scale.

docker-compose up --scale web=3

El comando anterior iniciará tres instancias del servicio web.

Ejecutando comandos dentro de contenedores

Puedes ejecutar comandos arbitrarios dentro de tus servicios en ejecución usando docker-compose exec:

docker-compose exec web bash

Este comando abre un shell bash dentro del contenedor del servicio web en ejecución.

Vinculando Docker Compose a una sola red

Por defecto, Docker Compose crea una red predeterminada para tus servicios. Sin embargo, puedes vincular todos los servicios a la misma red definiendo una red y especificándola en cada servicio:

version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network

networks:
custom-network:

Los servicios web y database están ambos conectados a custom-network, permitiéndoles comunicarse independientemente.

Conclusión

Docker Compose es una herramienta robusta que simplifica el proceso de gestión de aplicaciones Docker de múltiples contenedores. Al definir servicios en el archivo docker-compose.yml, puedes desplegar y gestionar rápidamente el stack de tu aplicación. La clave para un uso efectivo de Docker Compose es entender las opciones de configuración del archivo docker-compose.yml, incluyendo servicios, volúmenes y redes.

Esta guía completa ofrece una visión general de cómo configurar Docker y Docker Compose en Linux, crear un archivo Compose y gestionar tu aplicación. Con este conocimiento, puedes aprovechar eficazmente Docker Compose para manejar entornos complejos basados en Linux. Practica con tus propias aplicaciones para familiarizarte más y personalizar las configuraciones de Docker Compose según las necesidades específicas.

Si encuentras algo incorrecto en el contenido del artículo, puedes


Comentarios