Docker Compose permite definir y ejecutar varias aplicaciones contenedorizadas en un único archivo YAML. Si tu entorno usa varios servicios (app + base de datos, por ejemplo), Compose ordena todo el arranque con un solo comando.
Por qué Docker Compose merece la pena
- Un solo archivo (
compose.yml) define todo el entorno. - Reproduce el entorno exactamente en cualquier máquina con Docker.
- Hace más sencillo el desarrollo de aplicaciones multi-contenedor.
Requisitos previos
- Ubuntu 22.04 o 24.04 con Docker instalado. Si no lo tienes todavía, primero completa la guía de instalación de Docker.
- Acceso a una cuenta con permisos
sudo.
Comprobar la versión de Docker
Antes de instalar Compose, verifica que Docker Engine funciona:
docker --version
Deberías ver algo como:
Docker version 27.x.x, build xxxxxxx
Instalar Docker Compose
A partir de Docker Desktop y las versiones recientes de Docker Engine, Compose se instala como plugin oficial. Para instalarlo:
sudo apt install docker-compose-plugin -y
Esto incluye el comando docker compose (con espacio, sin guion bajo). El antiguo docker-compose (binario independiente) ya no es la forma recomendada.
Verificar la instalación
Comprueba que Compose está disponible:
docker compose version
La salida debe ser algo como:
Docker Compose version v2.x.x
Tu primer compose.yml
Crea un directorio para probar Compose:
mkdir -p ~/compose-demo && cd ~/compose-demo
Crea un archivo llamado compose.yml con este contenido:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
Arrancar el servicio
docker compose up -d
El -d ejecuta en segundo plano. Ahora abre el navegador en:
http://localhost:8080
Verás la página de bienvenida de Nginx.
Comandos básicos de Docker Compose
# Levantar servicios en segundo plano
docker compose up -d
# Ver los servicios activos
docker compose ps
# Detener y eliminar los servicios
docker compose down
# Ver los logs
docker compose logs -f
# Reconstruir imágenes (si cambiaste compose.yml)
docker compose up -d --build
Configurar una aplicación de varios servicios
Aquí hay un ejemplo más completo con una aplicación Node.js y una base de datos PostgreSQL:
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/app
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=app
volumes:
pgdata:
Arranca ambos servicios:
docker compose up -d
Cómo desinstalar Docker Compose
Si necesitas eliminar el plugin:
sudo apt purge docker-compose-plugin -y
Los volúmenes y contenedores creados no se eliminan con esta orden. Para limpiarlos:
docker compose down --volumes
Problemas frecuentes
docker compose: command not found
Si el comando no se reconoce, verifica que el plugin está instalado:
dpkg -l | grep docker-compose-plugin
Si no aparece, repite el proceso de instalación con apt.
Permission denied al ejecutar docker compose
Asegúrate de que tu usuario pertenece al grupo docker:
sudo usermod -aG docker $USER
newgrp docker
Conclusión
Con Docker Compose puedes levantar entornos completos de desarrollo en segundos. El siguiente paso lógico es crear un Dockerfile para tus propias aplicaciones y combinarlo con Compose en tu día a día.