Curso de Swarm

Cómo funciona docker service ps internamente

Curso de Swarm

Contenido del curso

Cómo funciona docker service ps internamente

Resumen

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.

Ejemplo de creación y seguimiento inmediato:

docker service create --name pinger alpine:latest ping google.com docker service ps pinger

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.

docker service ps 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.

docker service inspect pinger # Resumen formateado docker service inspect --pretty pinger

Puntos clave del inspect:

  • Imagen: alpine:latest con su digest inmutable. El digest identifica la imagen de forma única más allá del tag.
  • Comando: ping google.com.
  • TaskTemplate: la plantilla (template) de la tarea que el manager envía a los nodos para construir contenedores de forma consistente.

Para una vista rápida usa --pretty; para detalle fino, el JSON crudo.

¿Por qué ver logs en Swarm?

Con docker service logs puedes seguir la salida de tus servicios. La opción -f (follow) envía nuevas entradas en tiempo real.

docker service logs -f pinger

Esto funciona bien cuando tu proceso escribe al standard output (modelo de doce factores). Si la app sólo escribe a archivo, no verás logs aquí.

¿Cómo gestionar el ciclo de vida de un servicio en Swarm?

Crear, observar y eliminar servicios requiere unos pocos comandos. Swarm respeta el estado deseado y aplica cambios de forma segura.

  • Crear servicio.
docker service create --name pinger alpine:latest ping google.com
  • Ver estado de tareas y nodo donde corre.
docker service ps pinger
  • Inspeccionar la configuración (imagen, task template, comando).
docker service inspect pinger
  • Seguir la salida en vivo con follow.
docker service logs -f pinger
  • Eliminar el servicio respetando el estado deseado.
docker service rm 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.