4

У меня есть рой, созданный двумя узлами, одним менеджером и одним рабочим. Я хотел бы иметь порт, опубликованный в рое, поэтому я могу получить доступ к своим приложениям, и мне интересно, как я это достигаю.docker deploy не будет публиковать порт в рое

version: '2' 
services: 
    server: 
    build: . 
    image: my-hub.company.com/application/server:latest 
    ports: 
     - "80:80" 

Это открывает порт 80, когда я бегу докер-компоновать и она работает просто отлично, но когда я запустить в комплекте развернуть

docker deploy my-service 

Это не публикуете порт, поэтому он просто говорит, 80/tcp в docker ps, вместо указания на порт. Возможно, это связано с тем, что мне нужно подключить балансировщик нагрузки или запустить какую-нибудь причудливую команду или, возможно, добавить еще один уровень конфигурации, чтобы фактически разоблачить этот порт в роли нескольких хостов.

Может кто-нибудь помочь мне понять, что мне нужно для настройки/сделать, чтобы это отображало порт.

Моим лучшим сценарием будет то, что порт 80 будет открыт, и если я получу доступ к нему из разных имен хостов, он отправит меня в разные приложения.

Update: Это похоже на работу, если я выполнить следующие команды после развертывания приложения

docker service update -p 80:80 my-service_server 
docker kill <my-service_server id> 

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

https://github.com/docker/dockercloud-haproxy

Там хорошее описание в нижней части описания того, как сеть должна выглядеть:

Internet -> HAProxy -> Service_A -> Container A 

Однако я не могу найти способ связать услуги через службу Docker создать команду, оптимально теперь выглядит следующим образом способ настроить сеть, и когда я применяю эту сеть к службе, она подберет ее в HAProxy.

- Марк

ответ

4

режим Рой публикует порты по-другому. Он не будет отображаться в docker ps, потому что он не публикует порт на хосте, он публикует порт для всех узлов, поэтому он может загружать балансировку между репликами службы.

Вы должны увидеть порт от docker service inspect my-service.

Любые другие услуги, должны иметь возможность подключиться к my-service:80

+0

Что делать, если я не хочу, чтобы мой сервис отображал порт как «опубликованный порт» (публично вне рой), но я хочу разоблачить его внутри (внутри рой) для этой службы, которая будет использоваться другими службами в рой. –

+0

Тогда вам не нужно ничего делать. Это поведение по умолчанию, пока все службы находятся в сети по умолчанию, или все они присоединяются к одной сети. – dnephin

5

Насколько я понял, на данный момент вы можете просто публиковать порты обновляют службы позже создание, как это:

docker service update my-service --publish-add 80:80 
0

воли docker service ls отобразить сопоставления портов.

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