Este es un texto traducido automáticamente que puede contener errores!
Docker simplifica el despliegue de aplicaciones. En lugar de instalar y configurar software manualmente en un servidor, defines todo en archivos de configuración. El resultado es reproducible, portátil y rápido de configurar.
¿Qué es Docker Compose?
Con Docker Compose, defines múltiples servicios en un solo archivo (docker-compose.yml). Cada servicio es un contenedor con su propia configuración.
services:
web:
image: nginx:latest
ports:
- "80:80"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
Un comando configura todo:
docker compose up -d
# Starter tjenestene i bakgrunnen.
# Inicia los servicios en segundo plano.
¿Necesitas mover el servicio a otro servidor? Copia el archivo y ejecuta el mismo comando. Todo es idéntico.
¿Por qué es esto automatización?
Piensa en la diferencia:
| Configuración manual | Con Docker Compose |
|---|---|
| Instalar Nginx manualmente | image: nginx:latest |
| Configurar puertos | ports: "80:80" |
| Instalar Grafana manualmente | image: grafana/grafana:latest |
| Documentar todos los pasos | Todo está documentado en el archivo .yml |
| Repetir todo en el siguiente servidor | docker compose up -d |
El archivo Docker Compose es la documentación. Describe exactamente qué servicios se están ejecutando, qué puertos están utilizando y cómo están configurados.
Comandos Docker útiles
| Comando | Lo que hace |
|---|---|
docker compose up -d | Inicia todos los servicios en segundo plano |
docker compose down | Detiene y elimina todos los contenedores |
docker compose logs -f | Sigue los registros en tiempo real |
docker compose pull | Obtiene la última versión de todas las imágenes |
docker compose restart | Reinicia todos los servicios |
docker ps | Muestra los contenedores en ejecución |
Volumes: Guarda datos fuera del contenedor
Los contenedores son temporales. Si eliminas un contenedor, todo su contenido desaparece. Para mantener los datos, utilizamos volúmenes:
services:
database:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: hemmelig # Contraseña de PostgreSQL
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Aquí se guardan los archivos de la base de datos en un volumen llamado db-data. Incluso si elimina y vuelve a crear el contenedor, los datos seguirán ahí.
Actualización de servicios
Actualizar un servicio de Docker es sencillo:
# Obtener la última versión
docker compose pull
# Reiniciar con la nueva versión
docker compose up -d
Compara esto con la actualización de software instalado manualmente, donde quizás tengas que descargar, configurar y esperar que no se rompa nada.
Tarea 1 - Configurar Nginx con Docker Compose
Crea un docker-compose.yml que ejecute un servidor web Nginx:
- Crea una nueva carpeta y crea el archivo
docker-compose.yml - Define un servicio con
image: nginx:latesten el puerto 80 - Ejecuta
docker compose up -d - Visita
http://localhosten el navegador
Tarea 2 - Agregar un servicio
Extiende docker-compose.yml de la tarea 1 con un servicio adicional. Por ejemplo:
- Uptime Kuma en el puerto 3001
- Grafana en el puerto 3000
Inicia todo con docker compose up -d y verifica que ambos servicios se estén ejecutando simultáneamente.
Resumen
- Docker Compose te permite definir múltiples servicios en un solo archivo
- El archivo Compose es tanto configuración como documentación
- Volúmenes almacenan datos fuera del contenedor para que sobrevivan a los reinicios
- La actualización es
docker compose pull+docker compose up -d - Docker facilita mover servicios entre servidores