Tag: 播放

dockerdocker0和容器广播地址没有设置

我是“dockerizing”一个应用程序,它在已知端口上进行UDP广播心跳。 这是在各种主机上的docker-engine-1.7.0(Fedora,Centos7,SLES 12)。 我注意到docker主机上的'docker0'桥和容器内部的'eth0'都有一个0.0.0.0的广播地址。 假设主机上的pipe理员权限,我可以手动设置docker0上的广播地址。 同样在容器(如果容器正在运行特权或与NET_ADMIN,NET_BROADCAST),但我很好奇,为什么广播地址没有默认设置。 是否有一个configuration选项,我错过了自动执行此操作的Docker? 主办: # ifconfig docker0 broadcast 172.17.255.255 up # tcpdump -i docker0 -p 5000 容器: # ifconfig eth0 broadcast 172.17.255.255 up # echo "Hello world" | socat – UDP-DATAGRAM:172.17.255.255:5000,broadcast 一旦广播地址被设置,从主机到容器的广播也可以工作。

将Docker容器连接到networking接口/设备而不是IP地址

经过仔细研究,testing和摆弄之后,我只能通过从IP /端口转发来find将Docker容器连接到给定接口的方法。 这可以通过将-p Host-IP:Host-Port:Container-Port到docker run命令来完成。 我有一个监听UDP广播(255.255.255.255)的应用程序,并且无法configuration转发,使得我的容器将接收到这些广播,而不转发所关注的端口上的所有networking通信(不pipe通过哪个接口它来),即-p Host-Port:Container-Port 。 可以使用–net=host来configuration容器,只需将我的代码写入绑定到给定的接口,我已经完成并testing了这个接口,但仍然违背了容器的主要思想。 目标是让同一应用程序的多个容器在不同的networking接口上进行监听(如在设备中,而不是在地址上)。 关于如何做到这一点的任何想法? 编辑#1 :思考了这一点之后,有可能在所需的接口上设置网桥就足够了,但我不相信操作系统通过它发送广播数据包。 敬请关注,因为我执行更多的testing。 编辑#2 :数据包通过桥发送就好了。 但是,网桥被configuration为Docker默认网桥。 我还没有弄清楚如何在不同的网桥上运行容器。 看了一些笔记,指出将networking设置为–net=none并通过lxc容器设置自己configuration它。