2017-01-19 7 views
0

поэтому я создал службу на Docker роя:Опубликовано Сервис не доступен на Докер Swarm

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

Это приложение Spring загрузки и при взгляде на стандартный вывод созданного Docker контейнера следующая строка показано:

2017-01-19 12:44:48.588 INFO 6 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http) 

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

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

Весна загрузки приложение работает отлично при запуске непосредственно на машине, нет никаких намеков в журналах, я не знаю, где искать дальше ... кто-нибудь ключ здесь?

+0

Вы должны 'curl' для ф менеджера, а не локальные. –

+0

@AlexanderGeorge спасибо, сработал. Почему я не могу использовать localhost при скручивании из самой машины-менеджера? – SakeSushiBig

+0

Я написал правильный ответ. –

ответ

1

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

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

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

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

+0

Так работал 'curl' на IP-адрес, но я не запускал команду' curl to localhost' в контейнере, я запускал ее на сам мастер-мастер докеров, ** тот же самый компьютер **. – SakeSushiBig

Смежные вопросы