我想将在Docker-Compose文件中定义的两个Docker容器(`app`和`db`)相互连接起来。其中一个容器(`app`)还应连接到主机网络 (`host`)。为了使用 Docker 网络中的嵌入式 DNS 功能,这些容器应该连接到一个共同的用户定义网络 (`appnet` 或 `default`)。
`app`还需要直接连接到主机网络以接收 Docker 主机的物理网络中的以太网广播(网络层2)。在compose中同时使用 `network_mode: host` 和 `networks` 指令会导致以下错误:
`ERROR:'network_mode' and 'networks' cannot be combined`
如果在服务中指定网络名称 `host` 而未在 networks 中定义它(因为它已经存在),则会导致以下错误:
`ERROR: Service "app" uses an undefined network "host"`
下一个尝试:显式定义两个网络,并在服务级别不使用 `network_mode: host` 属性。
`app`还需要直接连接到主机网络以接收 Docker 主机的物理网络中的以太网广播(网络层2)。在compose中同时使用 `network_mode: host` 和 `networks` 指令会导致以下错误:
`ERROR:'network_mode' and 'networks' cannot be combined`
如果在服务中指定网络名称 `host` 而未在 networks 中定义它(因为它已经存在),则会导致以下错误:
`ERROR: Service "app" uses an undefined network "host"`
下一个尝试:显式定义两个网络,并在服务级别不使用 `network_mode: host` 属性。
version: '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: null
hostnet:
external:
name: host
上述docker-compose文件产生了一个错误:
ERROR: for app network-scoped alias is supported only for containers in user defined networks
如何在Docker-Compose中同时使用host
网络、任意其他用户定义网络(或默认网络)?