Portainer facilita la administración de un Docker Swarm productivo con una interfaz visual, abierta y gratuita. Permite crear y gestionar servicios, stacks, usuarios y permisos sin depender siempre de SSH. Aquí verás cómo desplegar Portainer como servicio, explorar el clúster y publicar un stack complejo tipo Example Voting App, todo con pasos claros.
¿Cómo administrar un swarm productivo con Portainer?
Portainer es una herramienta open source recomendada y activamente mantenida. Funciona tanto en modo standalone como en modo Swarm. Ofrece un panel para ver nodos, gestionar labels, cambiar la availability, y hasta desplegar templates con un clic. También trae control de usuarios, permisos y más.
¿Qué requisitos de almacenamiento y volúmenes existen?
Portainer y herramientas de administración necesitan persistencia en disco para su estado interno.
En Swarm, por defecto solo está el driver local de volúmenes.
Un volumen local vive en un solo nodo. No es accesible por todas las tareas en todos los nodos.
Existen plug-ins de storage con otros drivers para usar discos en AWS o Azure. Investígalos antes de producción.
Para practicar Portainer basta con un volumen local. Simple y suficiente.
Pasos clave que se mencionan:
Crear un volumen llamado portainer_data.
Ejecutar Portainer como servicio del Swarm.
Montar el docker socket con bind mount y mapear el volumen a /data.
Aplicar un constraint para correrlo en un manager.
¿Cómo desplegar Portainer como servicio en el manager?
Primero, crea el volumen local:
docker volume create portainer_data
Luego, crea el servicio (con mounts y puerto 9000):
Al iniciar, Portainer solicita crear el usuario administrador. Desde allí podrás gestionar stacks, servicios, networks overlay, volúmenes e imágenes.
¿Cómo visualizar nodos, servicios y tareas en Portainer?
El panel de Portainer para Swarm muestra nodos y su estado. Puedes entrar a cada nodo y ver qué corre, ajustar labels, cambiar la availability o renombrarlo. También hay templates de aplicación para desplegar recursos con un clic.
Vista del Swarm: nodos, servicios y tareas activas.
Sección de stacks: ver y controlar cada stack.
Visualizer integrado: observar la distribución de tareas.
Usuarios y permisos: control fino de acceso.
Nota: en entornos como Play With Dr., algunos enlaces de acceso directo pueden no funcionar por dominios distintos. No afecta el funcionamiento del stack.
¿Cómo desplegar un stack complejo con Docker Stack y Portainer?
Portainer permite cargar stacks desde texto pegado, archivo local o repositorio git. Usaremos el Example Voting App, muy útil para mostrar la potencia de Docker Swarm con múltiples tecnologías coordinadas.
¿Qué arquitectura tiene el example voting app?
Voting Up: aplicación web en Python que recibe votos.
Result Up: aplicación web en Node que muestra resultados.
Radiesse: servicio de conteo de votos intermedio.
Worker en .NET: procesa los votos y los graba periódicamente.
Base de datos Postgre: almacén de resultados persistente.
Flujo resumido:
Se vota en Voting Up.
El voto pasa por Radiesse.
El worker .NET colecta y guarda en Postgre.
Result Up consulta y muestra en tiempo real.
¿Cómo cargar el stack file desde Portainer?
Abre la URL del proyecto público en GitHub.
En la sección Docker Stack, abre el archivo en modo RAW y copia.
En Portainer: Stacks > Add stack > nombre “voting”.
Pega el contenido, o sube archivo, o usa un repositorio git.
Opcional: define variables de entorno y permisos.
Ejecuta el deployment.
Verificación por terminal (equivalente a lo que muestra Portainer):
docker stack lsdocker stack ps voting
# Ver estado del workerdockerserviceps votingeworker.1
Portainer mostrará los servicios mientras descargan imágenes y arrancan. Es normal ver estados “preparing” hasta que todo esté disponible.
¿Cómo probar la app y qué observar?
Abre la UI de votos y elige entre gatos o perros.
Verifica en Result Up cómo cambian los resultados en tiempo real.
No puedes votar dos veces desde la misma sesión.
Usa una ventana de incógnito u otro navegador para emitir otro voto.
Observa el visualizer con tareas distribuidas y servicios activos.
Antes de producción, considera:
Portainer expone HTTP por defecto. Asegura con HTTPS y controla accesos.
Evalúa plug-ins de almacenamiento si necesitas volúmenes compartidos.
Define políticas de permisos de usuarios.
¿Te gustaría que cubramos alguna configuración específica de Portainer, seguridad con HTTPS o despliegue de stacks desde git? Deja tus preguntas y casos en los comentarios.