从 Docker 容器发送 UDP 广播

19

我有几个docker容器(使用docker-compose和一个单独的网络 - network-sol)

其中一个容器是一个Spring Boot应用程序,会向本地网络发送UDP广播。因为255.255.255.255是network-sol的本地广播地址,所以它不能成功。

如何广播UDP消息,以使"顶部本地网络"能够接收到这些数据包?我必须使用定向广播地址吗?

P.S.

如果应用程序部署在docker之外(作为本地网络的一部分),广播就能正常工作。


我认为这只有在运行时使用 network_mode: host 才能正常工作。但我不是网络专家,无法确认。 - Tarun Lalwani
3个回答

7
你可以通过在docker-compose.yml文件中定义network_mode: host来运行服务。
或者,你可以通过发布容器的端口来与其通信。使用以下配置进行发布。请注意,对于UDP通信,需要添加/udp
service:
  ports:
    - "8080:8080/udp"

由于某些原因,它对我不起作用。无论如何,我会点赞,因为它似乎是逻辑上的答案。 - royB

0

我从this中获得了一些运气。该指南指定了在docker网络中需要进行广播转发的sysctl参数,您可以使用他的脚本或在运行docker时指定这些参数。


0
使用Docker Compose文件 使用桥接网络
version: '3'
services:
  idhub-go:
    container_name: test
    image: 'nginx'
    ports:
      - "2641:2641/tcp"
      - "2641:2641/udp"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接