Docker Compose es una herramienta poderosa que permite definir y ejecutar aplicaciones Docker multi-contenedor. Con Docker Compose, puedes usar un archivo YAML para configurar los servicios de tu aplicación. Luego, con un solo comando, puedes crear e iniciar todos los servicios desde tu configuración.
¿Qué es Docker Compose?
Docker Compose es una herramienta que simplifica la gestión de aplicaciones que constan de múltiples contenedores. En lugar de ejecutar y gestionar cada contenedor individualmente, Docker Compose permite definir todos los contenedores y sus configuraciones en un solo archivo, llamado docker-compose.yml
.
Beneficios de Docker Compose
- Simplicidad: Facilita la definición y ejecución de aplicaciones multi-contenedor.
- Reproducibilidad: Garantiza que el entorno de desarrollo sea consistente con el de producción.
- Escalabilidad: Permite escalar servicios fácilmente con un solo comando.
- Portabilidad: Facilita el traslado de aplicaciones entre diferentes entornos.
Instalación de Docker Compose
Docker Compose se instala junto con Docker Desktop en Windows y macOS. En Linux, puedes instalar Docker Compose manualmente.
Instalación en Linux
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
Verificación de la Instalación
Para verificar que Docker Compose se ha instalado correctamente, ejecuta:
Conceptos Clave de Docker Compose
Servicios
Un servicio define un contenedor Docker que forma parte de tu aplicación. Cada servicio se define en el archivo docker-compose.yml
y puede tener configuraciones específicas como la imagen Docker a usar, los puertos a exponer, volúmenes, etc.
Volúmenes
Los volúmenes se utilizan para persistir datos generados por y usados en contenedores Docker. En Docker Compose, puedes definir volúmenes que serán compartidos entre servicios.
Redes
Docker Compose permite definir redes personalizadas para que los servicios puedan comunicarse entre sí. Por defecto, Docker Compose crea una red para cada aplicación y conecta todos los servicios a esta red.
Estructura de un Archivo docker-compose.yml
Un archivo docker-compose.yml
típico tiene la siguiente estructura:
version: '3' services: web: image: nginx ports: - "80:80" db: image: postgres environment: POSTGRES_PASSWORD: example
Explicación del Ejemplo
- version: Especifica la versión del formato de archivo de Docker Compose.
- services: Define los servicios que componen tu aplicación.
- web: Un servicio que usa la imagen
nginx
y expone el puerto 80. - db: Un servicio que usa la imagen
postgres
y establece una variable de entornoPOSTGRES_PASSWORD
.
- web: Un servicio que usa la imagen
Comandos Básicos de Docker Compose
Levantar Servicios
Para levantar los servicios definidos en el archivo docker-compose.yml
, usa:
Detener Servicios
Para detener los servicios, usa:
Escalar Servicios
Para escalar un servicio específico, usa:
Este comando levantará tres instancias del servicio web
.
Ejercicio Práctico
Objetivo
Crear un archivo docker-compose.yml
que defina una aplicación simple con un servidor web y una base de datos.
Pasos
- Crea un directorio para tu proyecto y navega a él.
- Crea un archivo
docker-compose.yml
con el siguiente contenido:
version: '3' services: web: image: nginx ports: - "80:80" db: image: postgres environment: POSTGRES_PASSWORD: example
- Levanta los servicios usando el comando
docker-compose up
. - Verifica que el servidor web está corriendo accediendo a
http://localhost
en tu navegador.
Solución
version: '3' services: web: image: nginx ports: - "80:80" db: image: postgres environment: POSTGRES_PASSWORD: example
Conclusión
En esta sección, hemos introducido Docker Compose, una herramienta esencial para gestionar aplicaciones multi-contenedor. Aprendimos sobre sus beneficios, cómo instalarlo, y los conceptos clave como servicios, volúmenes y redes. También vimos la estructura básica de un archivo docker-compose.yml
y algunos comandos esenciales. En la próxima sección, profundizaremos en cómo definir servicios en Docker Compose.
Docker: De Principiante a Avanzado
Módulo 1: Introducción a Docker
- ¿Qué es Docker?
- Instalando Docker
- Arquitectura de Docker
- Comandos Básicos de Docker
- Entendiendo las Imágenes de Docker
- Creando tu Primer Contenedor Docker
Módulo 2: Trabajando con Imágenes Docker
- Docker Hub y Repositorios
- Construyendo Imágenes Docker
- Conceptos Básicos de Dockerfile
- Gestionando Imágenes Docker
- Etiquetado y Publicación de Imágenes
Módulo 3: Contenedores Docker
- Ejecutando Contenedores
- Ciclo de Vida del Contenedor
- Gestionando Contenedores
- Redes en Docker
- Persistencia de Datos con Volúmenes
Módulo 4: Docker Compose
- Introducción a Docker Compose
- Definiendo Servicios en Docker Compose
- Comandos de Docker Compose
- Aplicaciones Multi-Contenedor
- Variables de Entorno en Docker Compose
Módulo 5: Conceptos Avanzados de Docker
- Profundización en Redes Docker
- Opciones de Almacenamiento Docker
- Mejores Prácticas de Seguridad en Docker
- Optimizando Imágenes Docker
- Registro y Monitoreo en Docker
Módulo 6: Docker en Producción
- CI/CD con Docker
- Orquestando Contenedores con Docker Swarm
- Introducción a Kubernetes
- Desplegando Contenedores Docker en Kubernetes
- Escalado y Balanceo de Carga