Опубликованная услуга недоступна для Docker Swarm

поэтому я создал сервис на рое докеров:

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

Это приложение Spring Boot и при просмотре стандартного файла созданного контейнера докера отображается следующая строка:

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

Указание приложения прослушивает соответствующий порт. При запуске docker service inspect my-service также говорится, что для этой службы опубликован порт 8761.

Когда я затем попробую проблему: curl http://localhost:8761 (на докеровском роевом хозяине, единственном узле в рое на данный момент) Я столкнулся с таймаутом. Керлинг на любой другой порт приводит к немедленной ошибке « Connection Refused .

Приложение Spring Boot прекрасно работает при запуске непосредственно на машине, в журналах нет намеков, я не знаю, где искать дальше … кто-нибудь подскажет здесь?

Вы должны curl от IP- curl менеджера , поскольку это узел, в котором работает ваш контейнер.

Вы указываете в своем вопросе, что вы используете команду curl внутри контейнера, но я предполагаю, что вы сделали что-то вроде eval $("docker-machine env <manager>") , что позволит вам запускать контейнеры в менеджер. При этом вы выбираете только активный механизм докеров, который будет использоваться.

Чтобы на самом деле запустить команду в машине, вы должны ssh в нее , а затем вы можете curl на localhost:

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