Servicio publicado no accesible en Docker Swarm

así que creé un service en un enjambre de dockeres:

docker create service --name my-service --network my-network -p 8761:8761 --replicas 1 my-image 

Es una aplicación de arranque de spring y cuando se mira la salida estándar del contenedor acoplador creado, se muestra la siguiente línea:

 2017-01-19 12:44:48.588 INFO 6 --- [ main] sbcetTomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http) 

Indicando que la aplicación escucha el puerto correcto. Al ejecutar el docker service inspect my-service , también dice que el puerto 8761 está publicado para este service.

Cuando intenté el problema: curl http://localhost:8761 (en el docker swarm master, el único nodo en el enjambre por ahora) me encuentro con un time de espera excedido. Si se enrosca a cualquier otro puerto, se produce un error inmediato de Connection Refused .

La aplicación Spring Boot funciona bien cuando se inicia directamente en la máquina, no hay pistas en los loggings, realmente no sé dónde search después … ¿Alguien una pista aquí?

Debe curl en la dirección IP del administrador , ya que es el nodo en el que se está ejecutando su contenedor.

Menciona en su pregunta que está ejecutando el command curl dentro del contenedor, pero supongo que ha hecho algo como eval $("docker-machine env <manager>") , que solo le permitirá iniciar contenedores en el gerente. Con esto solo selecciona el motor de docker activo que se utilizará.

Para ejecutar realmente un command en la máquina, debe ingresar en él , y luego puede curl a localhost:

docker-machine ssh <manager> -- curl localhost:8761