Networking 从docker compose容器到LAN主机的Zeroconf发现

Networking 从docker compose容器到LAN主机的Zeroconf发现,networking,docker-compose,zeroconf,Networking,Docker Compose,Zeroconf,对于物联网系统,要求基站自动发现附近的设备,然后连接到这些设备。基站上的软件使用docker compose进行部署 服务使用MDN(zeroconf)进行广告,并将自己标识为类型mytype。客户端使用aiozeroconf发现与\u mytype.\u tcp.local.匹配的服务 问题是docker compose网络中的客户端无法在LAN网络中发现服务,即使它们是可以访问的 目前,我有以下设置: LAN (Wifi) - IoT device - ServiceA -

对于物联网系统,要求基站自动发现附近的设备,然后连接到这些设备。基站上的软件使用docker compose进行部署

服务使用MDN(zeroconf)进行广告,并将自己标识为类型
mytype
。客户端使用aiozeroconf发现与
\u mytype.\u tcp.local.
匹配的服务

问题是docker compose网络中的客户端无法在LAN网络中发现服务,即使它们是可以访问的

目前,我有以下设置:

LAN (Wifi)
  - IoT device
    - ServiceA
  - Host / base station
    - ClientA
    - Docker-compose network
      - ServiceB
      - ClientB
  • ClientA同时找到ServiceA和ServiceB
  • 客户端B找到服务B
  • 主机上的avahi discover同时查找服务A和服务B
  • ClientB可以使用LAN IP(192.168.x.x)连接到ServiceA
这种情况是否被认为不符合MDN规范(ServiceA不再在.local中考虑),或者可以解决吗?

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

支持
反射器/启用反射器
设置

启用后,守护进程将把所有mDNS数据包转发到所有其他网络接口,包括Docker网桥网络。 假设采用简单的网络体系结构,docker compose services现在将能够发现本地网络上的设备

在某些情况下,反射是不受欢迎的行为。如果主机连接到多个本地网络,其他主机可能会获得无法访问服务的mDNS数据包