Docker: как подключиться из локального контейнера к локальному порту роя

У нас есть рой, работающий на 6 хостах и ​​около 15 контейнеров. Есть одна точка доступа, открытая как порт 3010.

На каждом хосте, являющемся нодой роя, есть локальная изолированная сеть с 3-мя докер-контейнерами. На каждом хосте один из этих контейнеров хочет подключиться к порту публикации 3010.

Мне нравится использовать порт на том хосте, на котором в данный момент запущен этот контейнер. Не знаю, разумно ли это?

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


person ajlind    schedule 03.12.2017    source источник


Ответы (1)


Как определить имя хоста, которое будет использоваться в док-контейнере для подключения к локальному порту роя.

Это название вашей службы.
Например. когда docker service create --name blue --network dev markuman/color
тогда вы можете подключиться к этому сервисному контейнеру, выяснив точное имя id

docker ps| grep blueeb46c52d0568        markuman/color:latest   
"/bin/sh -c '/bin/..."   51 seconds ago      Up 49 seconds       80/tcp              blue.1.o5w76smq3kh5jlomltf6yohj3

и просто сделать

docker exec -ti blue.1.o5w76smq3kh5jlomltf6yohj3 bash

Вот и все. Оттуда вы можете выполнить эхо-запрос или ssh к другим службам, которые относятся к той же сети.
Например. когда docker service create --name apache ... работает в той же сети, просто выполните ping apache. Это достаточно

person Markus    schedule 04.12.2017
comment
Сервисы Swarm уже находятся в другой сети, например. есть две разные сети: рой и локальная на хосте. - person ajlind; 05.12.2017