首页 > 解决方案 > 从 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

这种情况是否被认为超出了 mDNS 的规范(.local 中不再考虑 ServiceA),还是可以解决这个问题?

标签: networkingdocker-composezeroconf

解决方案


您可以使用mdns-repeater将 mDNS 数据包从主机网络转发到 Docker 网络,并使容器能够发现 LAN 中的设备。


推荐阅读