Orquestar con Docker Swarm es más claro cuando entiendes cómo se crean los servicios, cómo se planifican las tareas y cómo leer su estado en tiempo real. Aquí verás, paso a paso, cómo usar docker service ps, docker service inspect y docker service logs para trabajar con confianza y sin sorpresas.
¿Cómo funciona Docker Swarm por dentro para crear y ejecutar servicios?
Docker Swarm usa un modelo de planificación basado en scheduling y en el concepto de estado deseado. El manager recibe el pedido, crea el objeto servicio y define tareas que luego asigna a nodos (por ejemplo, un worker). Cada tarea termina ejecutándose como contenedor.
El cliente de Docker envía docker service create al manager del clúster.
El manager valida y crea el servicio: define cuántas tareas tendrá.
Asigna una IP virtual para enrutar dentro del Swarm.
Selecciona el nodo destino según restricciones de recursos.
El nodo recibe la descripción de la tarea: imagen y comando.
Prepara la tarea: descarga la imagen y crea el contenedor.
Ejecuta el contenedor y Swarm mantiene el estado en running.
Cuando todo se alinea, Swarm indica que los servicios han convergido: el estado actual coincide con el estado deseado.
¿Qué muestran service ps, service inspect y service logs?
A diferencia de docker ps (que lista contenedores), docker service ps muestra tareas: es el nivel intermedio entre servicio y contenedor. Verás imagen, nodo, y dos campos clave: Desired State y Current State.
dockerserviceps pinger
¿Qué es el desired state y el current state?
Desired State: lo que el manager espera (por ejemplo, running o shutdown).
Current State: lo que está ocurriendo ahora.
Al crear un servicio puede verse preparing mientras se descarga la imagen y se inicializa. Al estabilizarse, ambos estados coinciden en running.
¿Para qué sirve el inspect y el pretty?
Con docker service inspect verás un JSON completo del servicio; con --pretty, un resumen legible.
Inspeccionar la configuración (imagen, task template, comando).
dockerservice inspect pinger
Seguir la salida en vivo con follow.
dockerservice logs -f pinger
Eliminar el servicio respetando el estado deseado.
dockerservicerm pinger
Tras eliminar, el contenedor puede quedar unos segundos hasta recibir la señal y apagarse. Swarm lleva el servicio a shutdown en cuanto es posible.
¿Tienes dudas o un caso real que quieras probar con múltiples nodos, manager y worker? Cuéntalo y sumemos ideas para mejorar tu orquestación con Docker Swarm.