networking - 从 docker-compose 容器到 LAN 主机的 Zeroconf 发现
问题描述
对于物联网系统,需要基站自动发现附近的设备,然后连接到它们。基站上的软件是使用 docker-compose 部署的。
服务使用 mDNS (zeroconf) 做广告,并将自己标识为mytype
. 客户端使用 aiozeroconf 来发现匹配的服务_mytype._tcp.local.
。
问题是 docker-compose 网络中的客户端不会发现 LAN 网络中的服务——即使它们可以通过其他方式访问。
目前,我有以下设置:
LAN (Wifi)
- IoT device
- ServiceA
- Host / base station
- ClientA
- Docker-compose network
- ServiceB
- ClientB
- ClientA 找到 ServiceA 和 ServiceB
- ClientB 找到 ServiceB
- 主机上的 avahi-discover 发现 ServiceA 和 ServiceB
- ClientB 可以使用 LAN IP (192.168.xx) 连接到 ServiceA
这种情况是否被认为超出了 mDNS 的规范(.local 中不再考虑 ServiceA),还是可以解决这个问题?
解决方案
您可以使用mdns-repeater将 mDNS 数据包从主机网络转发到 Docker 网络,并使容器能够发现 LAN 中的设备。
推荐阅读
- java - Intellij 插件制作包和主类
- python - 在高维矩阵中采样并连接第 n 行和 n+1 行及后续行
- firebase - flutter and firestore : 动态改变价格和大小
- c++ - 打印二维向量的 std::queue
- php - Woocommerce - 如何将简短描述放在产品摘要下方?
- matlab - 如何在 MATLAB/OCTAVE 中创建一个带孔的矩形?
- python - ValueError:在构建 GAN 时,没有为 TensorFlow 中的任何变量提供梯度
- go - 与结构的多对多关联
- python - Python DataFrame:多列的累积和和减法?
- flutter - Flutter 覆盖一个包中的一个类