【问题标题】:forward udp multicast from eth0 to docker0将 udp 多播从 eth0 转发到 docker0
【发布时间】:2015-02-26 09:28:04
【问题描述】:

我有一个运行 java 应用程序的 docker 容器,该应用程序正在侦听 UDP 多播数据包。我没有收到容器内的数据包,但是它们出现在 eth0 的主机上。

有没有办法让 docker 自动拾取这些数据包并转发到容器中?

谢谢

【问题讨论】:

  • cap-add=NET_ADMIN 的特权有帮助吗? docs.docker.com/reference/run/…
  • @Greg 是的,我试过了,没有任何反应(事实上,容器是在特权模式下运行的)

标签: docker dockerfile


【解决方案1】:

在尝试了许多令人沮丧的日子之后……终于有一些东西奏效了:

使用 Pipework (https://github.com/jpetazzo/pipework),以下命令有效,但有一个问题 -

pipework eth2 $(docker run -d hipache /usr/sbin/hipache) 50.19.169.157/24

仅通过运行上述命令来运行 docker 容器对我没有多大帮助。我不得不在我的主机上运行tcpdump -i eth2 来捕获 eth2 接口上的数据包,然后它开始将数据包转发到 docker 容器。

知道为什么会起作用,而不仅仅是运行命令吗?

【讨论】:

  • 运行 tcpdump 可能会将接口置于混杂模式。试试ip link set eth2 promisc on 而不是tcpdump -i eth2
【解决方案2】:

您可能想尝试--net host,因为根据#3043 上的讨论,这似乎是让主机外部的多播流量到达容器的唯一解决方法。

【讨论】:

  • 谢谢,但实际上这对我不起作用。我也在做--link来链接其他容器,所以不能使用--net=host和--link。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2013-06-07
相关资源
最近更新 更多