Cómo funciona docker service ps internamente

Clase 9 de 24Curso de Swarm

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.

      Cómo funciona docker service ps internamente