【问题标题】:How to support multicast network in Docker如何在 Docker 中支持多播网络
【发布时间】:2019-01-15 04:54:10
【问题描述】:

我在 docker 中遇到了一个关于网络配置的大问题。情景是这样的:

1.我的发球有两个 eth:eth0 和 eth1:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.198.172 netmask 255.255.255.0 broadcast 172.17.198.255
inet6 fe80::250:56ff:fea8:233f prefixlen 64 scopeid 0x20
ether 00:50:56:a8:23:3f txqueuelen 1000 (Ethernet)
RX packets 5415657 bytes 2659904664 (2.4 GiB)
RX errors 0 dropped 78 overruns 0 frame 0
TX packets 935762 bytes 1824232555 (1.6 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.251.6.68 netmask 255.255.255.0 broadcast 10.251.6.255
inet6 fe80::250:56ff:fea8:1778 prefixlen 64 scopeid 0x20
ether 00:50:56:a8:17:78 txqueuelen 1000 (Ethernet)
RX packets 4954017171 bytes 349830337818 (325.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 66380998 bytes 4647495138 (4.3 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2.eth0 是默认的网络接口。 eth1 是一个支持多播的接口。在组播模式下接收和发送消息。

3.现在我使用以下命令创建一个容器: docker run -it -p 8181:8181 centos bash

4.据我了解,eth0和eth1两个接口都会桥接到容器中的veth0。所以我的问题是:

如果eth0和eth1都桥接到veth0,veth0如何从两个eth(eth0和eth1)接收ip数据包 如果我的理解是错误的,docker只是将eth0桥接到veth0。如何将 eth1 桥接到容器内的 veth1,以便容器可以通过 eth1 接收来自物理网络的多播数据包到 veth1。 非常感谢 !这个问题困扰了我很久。如果您有任何想法或任何问题,请在此处发表评论。谢谢!

【问题讨论】:

标签: docker networking containers multicast bridge


【解决方案1】:

我认为目前不支持此功能。最好的选择可能是禁用 Docker 的网络命名空间并使用--net host。请注意,这使容器可以直接访问主机接口,您需要通过已发布的端口进行连接才能访问其他容器。

您可以关注此问题的当前状态:https://github.com/moby/moby/issues/23659

【讨论】:

  • 感谢 BMitch。但是使用主机,容器正在使用主机的网络。它似乎并不那么孤立。
猜你喜欢
  • 1970-01-01
  • 2016-08-11
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多