Docker Swarm
Docker Swarm
Docker Swarm es el orquestador nativo de Docker para clusters multi-nodo. Portainer lo administra con una vista de cluster completa: servicios replicados, secrets, configs y stacks desplegados sobre todos los nodos.
Server vs Agent en Swarm
En Swarm, el agent se despliega como un servicio global (una réplica por nodo). Los agents se comunican entre sí formando un cluster, de modo que Portainer ve la información de todos los nodos a través de cualquiera de ellos.
flowchart TD
S["Portainer Server"] --> AG["Agent (servicio global)"]
AG --> N1["Manager node"]
AG --> N2["Worker node 1"]
AG --> N3["Worker node 2"]
Desplegar Portainer en Swarm
Sobre un nodo manager, Portainer ofrece un stack listo. El patrón estándar:
curl -L https://downloads.portainer.io/ce-lts/portainer-agent-stack.yml \
-o portainer-agent-stack.yml
docker stack deploy -c portainer-agent-stack.yml portainer
Ese stack levanta el Server (en un manager) y el agent como servicio global en todos los nodos, conectados por una red overlay. Accedés a la UI por el puerto 9443 publicado en el cluster.
Si ya tenés el Server corriendo en otro lado, podés desplegar solo el agent como servicio global y luego Add environment → Docker Swarm → Agent.
Services y scaling
En un entorno Swarm, la sección Services reemplaza conceptualmente a “Containers” como unidad principal:
- Un service define qué imagen correr y cuántas réplicas.
- Scaling en vivo: cambiás el número de réplicas y Swarm reprograma las tareas en los nodos.
- Rolling updates: al cambiar la imagen o config de un service, Swarm actualiza réplica por réplica según la política definida.
- Ves en qué nodo corre cada tarea (task) y sus logs.
El detalle del service expone update config, restart policy, placement constraints, recursos y redes.
Secrets y configs
Swarm tiene primitivas que el Docker standalone no:
- Secrets: datos sensibles (contraseñas, llaves, certificados) cifrados en el raft del cluster y montados como archivos en
/run/secrets/dentro del contenedor. Portainer los crea y los asocia a services. - Configs: archivos de configuración no sensibles distribuidos por el cluster del mismo modo.
Buena práctica: en Swarm, los secretos van en secrets, no en variables de entorno. Las variables son visibles en
inspect; los secrets no.
Stacks en Swarm
Al desplegar un stack en un entorno Swarm, Portainer usa docker stack deploy con tu Compose (versión 3.x con la clave deploy: para réplicas, placement y update policy). El stack se distribuye por el cluster como un conjunto de services.
services:
api:
image: midominio/api:1.4
deploy:
replicas: 3
update_config:
parallelism: 1
order: start-first
restart_policy:
condition: on-failure
networks:
- backend
networks:
backend:
driver: overlay
Nodos del cluster
La vista de Cluster / Nodes muestra cada nodo, su rol (manager/worker), disponibilidad y recursos. Desde acá drenás un nodo para mantenimiento (drain) o lo volvés activo.
Anterior → Capítulo 8: Registries · Siguiente → Capítulo 10: Kubernetes