经过仔细的研究,测试和摆弄,我只能通过从IP /端口转发来找到将Docker容器连接到给定接口的问题。这可以通过将-p Host-IP:Host-Port:Container-Port
添加到docker run
命令来完成。
我有一个应用程序监听UDP广播(255.255.255.255),并且无法配置转发,以便我的容器将接收这些广播而不转发我关心的端口上的所有网络流量(无论是否通过它进入的界面),即:-p Host-Port:Container-Port
。
可以使用--net=host
配置容器,然后编写我的代码以绑定到给定的接口,我已经完成并测试过了,但这仍然违背了一个容器。目标是让同一个应用程序的多个容器侦听不同的网络接口(如设备,而不是地址)。
关于如何做到这一点的任何想法?
编辑#1 :在考虑了这个之后,有可能在所需的界面上设置桥接就足够了,但我不相信操作系统会发送通过它广播数据包。随着我进行更多测试,请继续关注。
编辑#2 :数据包通过网桥发送就好了。但是,桥接器配置为Docker默认桥接器。我还没有弄清楚如何在不同的桥上运行容器。看到一些注意事项,指向将网络设置为--net=none
并通过lxc容器设置自行配置。
答案 0 :(得分:-2)
默认情况下,docker run命令发布tcp的端口。 尝试指定使用udp:
docker run -p Host-Port:Container-Port
/ udb ...