Я создаю сервис docker-compose, который включает в себя два контейнера. Один из этих контейнеров ( узел ) предназначен для поддержки механизма автообнаружения и должен быть частью локальной сети хоста (поскольку мне нужно, чтобы многоадресные UDP-пакеты обрабатывались маршрутизатором локальной сети, а не встроенным-in docker router).
Хотя «network_mode: host» в docker-compose.yml отлично справляется с задачей, мне нужно, чтобы эта служба также была доступна для второго контейнера ( qtcore ) по имени хоста через стандартную сеть docker-compose (например: http://node:37326). И это, по-видимому, невозможно, если для network_mode установлено значение "host".
Мой docker-compose.yml в настоящее время выглядиткак это:
version: '3.7'
services:
qtcore:
image: yansidorovtesseris/qtcore
build: .
container_name: qtcore
depends_on:
- node
env_file: defaults.env
ports:
- "8000:8000"
node:
image: yansidorovtesseris/komodo
container_name: node
env_file: node.env
ports:
- "37326:37326"
- "1900:1900"
network_mode: host
volumes:
- $HOME/node_state:/komodo/.komodo/$AC_NAME
Я пытался использовать пример из документации docker-compose (https://docs.docker.com/compose/compose-file/#host-or-none) для подключения сети хоста как внешней сети. С мыслью добавить оба хостаи сети по умолчанию для службы.
version: '3.7'
services:
node:
...
networks:
hostnet: {}
...
networks:
hostnet:
external: true
name: host
Но все, что я получаю, когда пытаюсь запустить docker-compose, это следующая ошибка: ERROR: for node network-scoped alias is supported only for containers in user defined networks