Docker Compose network: драйвер моста с доступом к хост-машине - PullRequest
0 голосов
/ 23 февраля 2019

Есть ли какой-нибудь способ иметь архитектуру микросервисов в Docker, используя Docker Compose таким образом, чтобы связь между контейнерами осуществлялась с помощью драйвера значения по умолчанию bridge ( т.е. Я не указаллюбой network_mode в любой службе в docker-compose.yml), но все контейнеры, имеющие доступ к общей службе на хост-компьютере?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 февраля 2019

Ваши контейнеры всегда имеют доступ к вашему хост-компьютеру.

В Linux вы можете просто использовать адрес шлюза по умолчанию внутри контейнера;это будет адрес моста на вашем хосте, к которому подключен ваш контейнер.Все хост-службы, которые прослушивают все интерфейсы, будут доступны по этому адресу.Предполагая, что в вашем контейнере установлен пакет iproute, вы можете получить адрес шлюза, используя что-то вроде:

ip route | awk '$1 == "default" {print $3}'

Конечно, вы можете использовать адрес любого интерфейса хоста и передать его в качестве переменной среды (docker run -e HOSTADDR=192.168.23.5 ...);использование адреса шлюза удобно, поскольку его можно обнаружить изнутри контейнера.

В Docker для MacOS или Docker для Windows вы можете использовать специальное имя хоста host.docker.internal для ссылки на хост, как описано, например, здесь .

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

...