在Docker容器中接收UDP组播

6
我正在使用docker compose和hypriotos在运行节点容器的树莓派上。我想在本地网络中接收发送到239.255.255.250:1982的UDP组播消息。我的代码在docker外的其他机器上运行良好,因此我认为这是一个docker问题。
我已经在docker文件中公开了1982/udp端口,并在docker-compose文件中添加了“1982:1982”和“239.255.255.250:1982:1982/udp”到端口。但我仍然无法接收任何内容。我漏掉了什么吗?
我的具体计划是从yeelight接收广告消息。这些消息在这里有记录。
任何帮助都将不胜感激。谢谢。
1个回答

7

虽然您可以使用-p 1982:1982/udp进行UDP,但我不认为docker的端口转发目前支持多播。如果您在守护程序上禁用用户空间代理(dockerd --userland-proxy=false ...),您可能会有更好的运气,但这只是一个猜测。

快速/简单的解决方案,虽然会减少一些隔离,但是使用docker run --net=host ...来使用主机网络。


1
谢谢,我现在正在使用主机网络,它可以正常工作。我必须在docker-compose文件中设置“network_mode”选项。 - leiropi
1
@daniel17903,你能分享一下配置吗?这个配置可以让Docker容器从主机接收UDP广播吗? - fatfatson
1
端口转发解决方案(无需在守护程序上禁用用户空间代理)在Linux上的Docker 19.03.5上对我很有效。 - rgov
1
我可以确认,在没有使用其他选项的默认docker run命令下,运行在docker容器中的node.js应用程序中的UDP多播发送器/接收器不起作用,但是使用--net = host选项运行可以使其正常工作。 - Wyck
@asnawi 可能是 wsl2 吗?我从来没有尝试过,直接在这里运行 Linux。 - BMitch
显示剩余4条评论

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