Udp 未设置docker docker 0和容器广播地址

Udp 未设置docker docker 0和容器广播地址,udp,docker,broadcast,Udp,Docker,Broadcast,我正在“停靠”一个应用程序,它在一个已知的端口上进行UDP广播。这是docker-engine-1.7.0在各种主机(Fedora、Centos7、SLES 12)上的应用 我注意到docker主机上的“docker0”桥和容器中的“eth0”都有一个0.0.0.0的广播地址 假设主机上有管理员权限,我可以在docker0上手动设置广播地址。同样,在容器中(如果容器运行的是privileged或带有NET_ADMIN、NET_BROADCAST),但我很好奇为什么广播地址在默认情况下没有设置。D

我正在“停靠”一个应用程序,它在一个已知的端口上进行UDP广播。这是docker-engine-1.7.0在各种主机(Fedora、Centos7、SLES 12)上的应用

我注意到docker主机上的“docker0”桥和容器中的“eth0”都有一个0.0.0.0的广播地址

假设主机上有管理员权限,我可以在docker0上手动设置广播地址。同样,在容器中(如果容器运行的是privileged或带有NET_ADMIN、NET_BROADCAST),但我很好奇为什么广播地址在默认情况下没有设置。Docker是否缺少自动执行此操作的配置选项

主持人:

容器:

# ifconfig eth0 broadcast 172.17.255.255 up
# echo "Hello world" | socat - UDP-DATAGRAM:172.17.255.255:5000,broadcast

一旦设置了广播地址,从主机到容器的广播也会起作用。

如果您将
NET\u ADMIN
传递到Docker容器,我将不会在您的应用程序中使用
docker0
网络

如果我正确理解了您试图执行的操作,那么属于不同主机的Docker容器会使用已知端口上的UDP广播心跳来查找彼此,而不是同一主机中的不同Docker容器

然后我建议使用
--net=host

docker-run--net=host--cap-add-net\u-ADMIN….

与此类似,如果将shell放入docker容器中,您将看到网络环境与运行容器的主机完全相同。如果您的应用程序先前使用UDP广播在该服务器上运行,则它在docker容器中的工作方式将完全相同。

另请参见:
# ifconfig eth0 broadcast 172.17.255.255 up
# echo "Hello world" | socat - UDP-DATAGRAM:172.17.255.255:5000,broadcast