Curso Docker (5): Organización con Stacks y Docker Compose

Aprende a gestionar aplicaciones completas con Stacks en Portainer. Descubre las ventajas de Docker Compose para organizar tu servidor eficientemente.

ℹ️ NOTA

En los módulos anteriores hemos aprendido a movernos por la terminal, instalar el motor y limpiar imágenes. Pero hasta ahora, hemos lanzado contenedores de uno en uno. En el mundo real, las aplicaciones son como engranajes: necesitan otras piezas para girar.

Si quieres montar un blog, necesitas el servidor web y una base de datos. Si quieres montar tu propio n8n, necesitas el servicio y sus volúmenes de persistencia.

Hoy daremos el salto a la orquestación. Aprenderás a usar los Stacks, la forma en que Portainer integra Docker Compose para que puedas desplegar ecosistemas enteros con un solo clic.


¿Qué es un Stack y por qué es la mejor forma de organizarse?

Un Stack es una colección de servicios que definen una aplicación completa. En lugar de ejecutar comandos por separado para crear redes, volúmenes y contenedores, utilizas un único archivo de configuración (en formato YAML) que describe todo lo que tu sistema necesita para funcionar.

Es la diferencia entre comprar ingredientes sueltos o seguir una receta de cocina. El Stack es la receta: asegura que siempre obtengas el mismo resultado, sin importar cuántas veces lo cocines.

Esquema de un Stack de Docker organizado El concepto de ‘Caja’: Un Stack mantiene agrupados todos los componentes de una aplicación, evitando que se mezclen con el resto de servicios de tu servidor.


Ventajas para un servidor de pocos recursos

Organizar tu servidor mediante Stacks no es solo una cuestión de orden; es una decisión técnica que mejora el rendimiento de tu búnker:

CONTENEDOR INDIVIDUAL VS STACK (COMPOSE)
CaracterísticaContenedor SueltoStack de Portainer
RedesSuelen usar la red 'bridge' comúnRed interna aislada automática
GestiónHay que actualizar uno a unoActualización centralizada del archivo YAML
DocumentaciónOlvidarás los comandos usadosEl archivo YAML es tu manual de instrucciones
EscalabilidadManual y propensa a erroresPredefinida y lista para replicar
💡 TRUCO

Nota de Laboratorio: En JRChub nunca desplegamos nada como contenedor suelto. Incluso para un servicio simple, usamos un Stack. ¿Por qué? Porque si mañana quiero mover mi servidor a otra máquina, solo tengo que copiar el archivo YAML y todo volverá a la vida exactamente igual.


El Editor de Stacks en Portainer: Adiós a la Terminal

Una de las grandes ventajas de Portainer es que incluye un editor web integrado. Ya no necesitas pelearte con nano o vim en la terminal de Ubuntu ni subir archivos por FTP.

  1. Entras en la sección “Stacks”.
  2. Haces clic en “Add stack”.
  3. Escribes tu configuración directamente en el navegador con resaltado de sintaxis.

Portainer se encarga de validar que tu código sea correcto antes de lanzarlo, ahorrándote fallos tontos de indentación.

Interfaz del editor de Stacks de Portainer con código YAML La consola del Arquitecto: El editor web te permite modificar variables de entorno y puertos sobre la marcha sin tocar la línea de comandos.


Acción Práctica: Desplegando tu primer Stack “Nginx-Alpine”

Vamos a poner en práctica lo aprendido en el Módulo 4 sobre imágenes ligeras. Vamos a desplegar un servidor web Nginx usando Alpine.

  1. Entra en Portainer: Ve a la sección Stacks y pulsa en ”+ Add stack”.
  2. Configuración: Ponle de nombre mi-primera-web.
  3. La Receta (YAML): Copia y pega este código en el editor:
version: '3.8'
services:
  servidor-web:
    image: nginx:alpine
    container_name: web_laboratorio
    restart: always
    ports:
      - "8080:80"
  1. Despliegue: Baja hasta el final y haz clic en el botón “Deploy the stack”.

¿Qué acaba de pasar bajo el capó? Portainer ha leído el archivo, ha descargado la imagen ligera de Alpine, ha creado una red interna para el stack y ha mapeado el puerto 8080 de tu servidor para que puedas ver la web en tu navegador (http://tu-ip:8080).


Conclusión y Siguientes Pasos

¡Felicidades, trasteador! Has dejado de “instalar programas” para empezar a “orquestar infraestructuras”. Tu servidor Ubuntu ahora es un búnker organizado, seguro y fácil de mantener.

Ahora que dominas la organización, es hora de blindar tu entorno. En el próximo módulo, aprenderás a configurar la seguridad, los roles de usuario y el acceso seguro mediante certificados SSL.

👉 Siguiente Módulo: Módulo 6: Seguridad y Acceso Seguro (Protegiendo tu Servidor)

¡Nos vemos en el Dashboard! 🛠️