我想将 Docker-Compose 文件中定义的两个 Docker 容器相互连接(app
and db
)。其中之一(app
)也应该连接到host
网络。
容器应连接到通用的用户定义网络(appnet
or default
)使用嵌入式DNS来自 docker 网络的功能。
app
还需要直接连接到主机网络,以接收docker主机物理网络中的以太网广播(网络层2)。
使用这两个指令network_mode: host
and networks
组合在一起,会导致以下错误:
ERROR: 'network_mode' and 'networks' cannot be combined
指定网络名称host
在服务中而不在网络中定义它(因为它已经存在),结果是:
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
上述 compose 文件会产生错误:
ERROR: for app network-scoped alias is supported only for containers in user defined networks
如何使用host
网络和任何其他用户定义的网络(或默认网络)一起在 Docker-Compose 中吗?