Я хочу подключить два контейнера Docker, определенные в файле Docker-Compose друг к другу (app
и db
). И один из них (app
) также должен быть подключен к сети host
.
Контейнеры должны быть подключены к общей пользовательской сети (appnet
или default
), чтобы использовать возможности встроенного DNS из сетей докеров.
app
также необходимо напрямую подключить к сети хоста для приема широковещательных передач Ethernet (сетевого уровня 2) в физической сети хоста докера.
Если я использую обе директивы network_mode: host
и networks
в компоновке вместе, я получаю следующую ошибку.
ERROR: 'network_mode' and 'networks' cannot be combined
Поэтому я должен делать это только с помощью networks
!?
version: "3.3"
services:
app:
build: .
image: app
container_name: app
environment:
- MONGODB_HOST=db
depends_on:
- db
networks:
- appnet
- hostnet
db:
image: mongo:latest
container_name: db
networks:
- appnet
networks:
appnet:
hostnet:
external:
name: host
Вышеупомянутый файл компиляции создает ошибку.
ERROR: for app network-scoped alias is supported only for containers in user defined networks
Если я использую сетевое имя host
в сервисе, не определяя его в сетях (поскольку оно уже существует), оно говорит.
ERROR: Service "app" uses an undefined network "host"
Как использовать сеть host
и любую другую пользовательскую сеть (или по умолчанию) вместе в Docker-Compose?
Я использую Docker version 17.11.0-ce-rc3, build 5b4af4f
и docker-compose version 1.17.1, build 6d101fb