gpt4 book ai didi

docker - 如何在 Docker-Compose 中一起使用主机网络和任何其他用户定义的网络?

转载 作者:IT老高 更新时间:2023-10-28 12:41:15 27 4
gpt4 key购买 nike

我想将在 Docker-Compose 文件中定义的两个 Docker 容器相互连接(appdb)。其中一个(app)也应该连接到host网络。

容器应连接到通用的用户定义网络(appnetdefault)以使用来自 docker 网络的嵌入式 DNS 功能.

app还需要直接连接到主机网络,才能在docker主机的物理网络中接收以太网广播(网络二层)。

在组合中同时使用 network_mode: hostnetworks 两个指令,会导致以下错误:

错误:“network_mode”和“networks”不能合并

在服务中指定网络名称host而不在网络中定义它(因为它已经存在),结果:

错误:服务“app”使用未定义的网络“主机”

下一次尝试:明确定义两个网络,不要在服务级别使用 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 中同时使用 host 网络和任何其他用户定义的网络(或默认网络)?

最佳答案

TL;DR 你不能。主机网络关闭该容器的 docker 网络命名空间。你不能同时打开和关闭它。

改为使用已发布的端口或可作为卷共享的 unix 套接字连接到您的数据库。例如。以下是发布端口的方法:

version: "3.3"

services:

app:
build: .
image: app
container_name: app
environment:
- MONGODB_HOST=127.0.0.1

db:
image: mongo:latest
container_name: db
ports:
- 127.0.0.1:27017:27017

关于docker - 如何在 Docker-Compose 中一起使用主机网络和任何其他用户定义的网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com