作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建包含两个容器的 docker-compose 服务。其中一个容器( 节点 )旨在支持自动发现机制,并且需要成为主机 LAN 的一部分(因为我需要由 LAN 路由器处理多播 UDP 包,而不是内置-在 docker 路由器中)。
虽然 docker-compose.yml 中的“network_mode: host”完美地解决了这个问题,但我需要通过默认的 docker-compose 网络(例如:http://节点: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
version: '3.7'
services:
node:
...
networks:
hostnet: {}
...
networks:
hostnet:
external: true
name: host
ERROR: for node network-scoped alias is supported only for containers in user defined networks
最佳答案
好吧,在我看来,将服务配置为同时使用“主机”和“桥接”选项是不可能的。不过,如果有人指出相反的情况,我会很高兴。
我想出了一个简单的解决方法,允许服务在主机 LAN 中作为一个 docker-compose 单元运行,同时使用“extra_hosts”(由 hNczy 建议)进行主机名查找。
它并不理想,可能不适合每种情况,但它对我有用。
基本上,两个服务现在都在使用“network_mode:host”,并且“qtcore”服务的“extra_hosts”提供了绑定(bind)到 127.0.0.1 的“node”名称。
version: '3.7'
services:
qtcore:
image: yansidorovtesseris/qtcore
build: .
container_name: qtcore
depends_on:
- node
env_file: defaults.env
network_mode: host
extra_hosts:
- "node:127.0.0.1"
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 - 如何在 docker-compose 中将主机网络与默认网络结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236867/
我是一名优秀的程序员,十分优秀!