Cómo usar Docker Compose para aplicaciones multicontendor
10:31, 21.05.2026
1. Herramientas para la gestión de aplicaciones con múltiples contenedores
Las aplicaciones modernas rara vez se ejecutan en un solo servicio o en un solo contenedor. En cambio, suelen basarse en varios servicios interconectados, como servidores web, bases de datos y cachés. La gestión manual de estos componentes puede resultar agotadora y propensa a errores. Afortunadamente, herramientas como Docker Compose simplifican el proceso de definición, implementación y gestión de aplicaciones con múltiples contenedores.
En este artículo analizaremos varias herramientas para gestionar entornos con múltiples contenedores, repasaremos los pasos para crear e implementar un proyecto con Docker Compose, y discutiremos las mejores prácticas para gestionar eficazmente tus servicios.
1.1 Descripción general de Podman
Podman, o Pod Manager Tool, es un motor de contenedores de código abierto diseñado como sustituto directo de Docker. Ofrece una interfaz de línea de comandos para gestionar contenedores.
Podman no necesita un daemon para funcionar y es compatible con systemd, lo que permite gestionar contenedores a través de módulos de systemd (y ejecutar systemd dentro de los contenedores).
Ayuda al usuario a organizar los contenedores en pods que comparten una misma red y recursos.
1.1.1 Cómo instalar Podman
Para instalar Podman en un sistema basado en Linux:
sudo apt update sudo apt install -y podman
Para macOS y Windows, puedes utilizar el instalador de Podman Desktop, disponible en el sitio web oficial.
1.2 Introducción a podman-docker
podman-docker — es una capa de compatibilidad que permite utilizar los comandos de la CLI de Docker con Podman. Esto resulta especialmente útil si vienes de Docker o trabajas con herramientas que esperan comandos de Docker.
1.2.1 Instalación de podman-docker
Instala podman-docker para habilitar la compatibilidad con los comandos de Docker:
sudo apt install -y podman-docker
Tras la instalación, comandos como docker run, docker build, o docker-compose serán interpretados por Podman.
1.3 Descripción general de docker-compose
Docker Compose es una herramienta para ejecutar aplicaciones Docker con múltiples contenedores mediante un sencillo archivo de configuración YAML. Permite describir todos tus servicios, redes y volúmenes en un solo archivo y gestionarlos conjuntamente. Docker Compose admite varios entornos aislados en un mismo host y cambios entre ellos. Esto significa que, con esta herramienta, puedes recrear los contenedores que hayan sufrido cambios sin modificar la propia aplicación multicontainer.
1.3.1 Cómo instalar docker-compose
Puedes instalar Docker Compose mediante el plugin oficial de la CLI de Docker:
sudo apt update sudo apt install docker-compose-plugin
O para una instalación independiente (obsoleta en favor del plugin):
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-
compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Comprobación de la instalación:
docker compose version
Creación de una aplicación con múltiples contenedores
Creemos una sencilla aplicación web compuesta por un servidor web (Nginx), un backend (Flask) y una base de datos (PostgreSQL).
2.1 Creación del archivo compose.yml
El archivo compose.yml (anteriormente docker-compose.yml) contiene todas las definiciones de servicios.
2.1.1 Definición de servicios
Cada servicio representa un contenedor. Puede especificar la imagen, el contexto de compilación, los puertos, los volúmenes y las variables de entorno.
2.1.2 Configuración de redes
Compose permite crear redes propias para que los contenedores puedan comunicarse entre sí utilizando los nombres de sus servicios.
2.1.3 Ejemplo de archivo compose.yml
version: "3.9"
services:
web:
build: ./web
puertos:
- "80:80"
depends on:
- backend
backend: build: ./backend
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb
depends_on:
- db
db:
image: postgres:15
restart: always
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
En esta configuración:
- web es el frontend, gestionado por Nginx.
- backend es un servidor API basado en Flask.
- db es un contenedor PostgreSQL con almacenamiento persistente.
2.2 Despliegue de aplicaciones multicontainer
Una vez que tu archivo compose.yml esté listo, despliega la aplicación con:
docker compose up --build
Este comando crea las imágenes (si es necesario) e inicia todos los servicios. Puedes detener la aplicación con:
docker compose down
Para ejecutar los servicios en segundo plano:
docker compose up -d
Gestión de una aplicación multicontainer
Docker Compose también simplifica la gestión de tus servicios. Funcionalidades:
- Escalado de servicios:
docker compose up -d --scale backend=3
Esto inicia tres instancias del servicio backend (útil para el equilibrio de carga).
- Visualización de registros:
docker compose logs -f
- Comprobación del estado del servicio:
docker compose ps
- Recompilación de imágenes:
docker compose build
- Ejecución de comandos puntuales:
docker compose exec backend flask db upgrade
Docker Compose te permite gestionar el ciclo de vida de tu aplicación de forma predecible y repetible.
Con Docker Compose, la gestión de aplicaciones con múltiples contenedores se vuelve mucho más sencilla, especialmente en casos en los que se trata de entornos que requieren una configuración y desmontaje secuenciales. Tanto si estás desarrollando localmente como si te estás preparando para la producción, Compose te permite definir toda la arquitectura de tu aplicación en un solo archivo y mantenerlo todo bajo control.
Información legal
Docker es una marca comercial de Docker, Inc. Podman es un proyecto de código abierto respaldado por Red Hat y otras organizaciones. Todo el software mencionado está sujeto a las licencias de código abierto correspondientes.
Al implementar aplicaciones en entornos de producción, asegúrate de cumplir con los requisitos de licencia de todas las imágenes y dependencias que utilices.