gpt4 book ai didi

docker - 多播未发送到所有 Docker 容器

转载 作者:行者123 更新时间:2023-12-02 18:32:17 24 4
gpt4 key购买 nike

我在 docker-compose 中定义了 3 个服务。其中一个发送应该由其他 2 个服务接收的多播,但只有一个接收它。 2 个接收者在不同的网络中,发送者是两个网络的一部分。

docker -compose.yml:

services:
sender:
networks:
- network_a
- network_b

receiver1:
networks:
- network_a
depends_on:
- sender

receiver2:
networks:
- network_b
depends_on:
- sender

networks:
network_a:
ipam:
driver: default
config:
- subnet: 172.20.1.0/24
gateway: 172.20.1.1

network_b:
ipam:
driver: default
config:
- subnet: 172.20.2.0/24
gateway: 172.20.2.1

receiver1 获得多播,但 receiver2 没有。

如果我从发送者网络字段中删除 network_a,则接收者 2 会收到消息。不知何故,多播在多个网络上不起作用。

有谁知道为什么会这样?

最佳答案

当我发现问题所在时,我会回答自己。

问题不在于 Docker 或任何与 Docker 相关的东西,严格来说是 多播问题。

基本上,多播只能在一个网络中工作,如果要在多个网络中发送多播消息,则必须遍历所有网络接口(interface) 要使用的。

例如,在 Java 中,您必须在发送多播消息之前调用 setInterface() 方法来准确指定使用的网络。
https://docs.oracle.com/javase/7/docs/api/java/net/MulticastSocket.html#setInterface(java.net.InetAddress)

关于docker - 多播未发送到所有 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com