Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 启用docker容器之间的广播_Ubuntu_Docker_Ubuntu 12.04_Docker Networking - Fatal编程技术网

Ubuntu 启用docker容器之间的广播

Ubuntu 启用docker容器之间的广播,ubuntu,docker,ubuntu-12.04,docker-networking,Ubuntu,Docker,Ubuntu 12.04,Docker Networking,我一直在尝试在几个容器之间启用一些UDP发现。 它已调出默认情况下容器已禁用广播,在以下位置缺少inet的brd: $ip地址显示开发eth0 27:eth0:mtu 1500 qdisc noqueue状态为UP 链接/以太00:00:01:4f:6a:47 brd ff:ff:ff:ff:ff:ff:ff:ff inet 172.17.0.12/16范围全局eth0 永远有效\u lft首选\u lft永远有效 堆栈: 主机:ubuntu 14.04 容器:ubuntu 12.04 do

我一直在尝试在几个容器之间启用一些UDP发现。 它已调出默认情况下容器已禁用广播,在以下位置缺少inet的brd:

$ip地址显示开发eth0
27:eth0:mtu 1500 qdisc noqueue状态为UP
链接/以太00:00:01:4f:6a:47 brd ff:ff:ff:ff:ff:ff:ff:ff
inet 172.17.0.12/16范围全局eth0
永远有效\u lft首选\u lft永远有效

堆栈:

  • 主机:ubuntu 14.04
  • 容器:ubuntu 12.04
  • docker 1.8.3
如何启用广播?以下是我迄今为止所尝试的:

  • ip链接集dev eth0 broadcast 172.17.255.255
    给出
    RTNETLINK答案:无效参数
  • 与--特权容器相同
  • 与NET_管理和NET_广播容器功能相同
到目前为止(Docker 18.06+)UDP广播是开箱即用的,只要您使用默认的网桥网络,并且所有容器都运行在同一主机上(当然也在同一Docker网络中)

使用docker compose服务在同一网络中自动运行,因此以下
docker compose.yml

version: '3.4'

services:

  master-cat:
    image: alpine
    command: nc -l -u -p 6666

  slave-cat:
    image: alpine/socat
    depends_on:
      - master-cat
    entrypoint: ''
    command: sh -c "echo 'Meow' | socat - UDP4-DATAGRAM:255.255.255.255:6666,so-broadcast"
使用
docker compose up
将在主猫上显示喵喵叫(原文如此!)


如果您想在多台主机上使用广播,这在docker附带的默认网络插件中是不可能的。->。但是一个更复杂的覆盖网络插件,比如应该可以工作(我还没有测试过它…

,正如你所说的,即使是docker 1.9,它仍然在等待中。是的,我正在订阅这张票。即使它是特定于多播的,但从其他用户的ipconfig结果来看,它似乎与广播有关?您是否考虑过使用诸如Concur、etcd或zookeeper之类的工具将服务发现作为一种功能添加到您的应用程序中?这些都很容易在码头上运行,避免了特权容器的需求,因为应用程序是C++,我不是C++开发人员,但实际上是在考虑通过单播来代理从容器A到容器B的广播,直到解决了DOCKER中的原始问题。虽然你提到的工具对于这样的任务来说太复杂了,但它们可能会在以后的其他问题上变得有用,所以谢谢你的建议。我会给这个答案+1,而不是+101,因为“在主猫身上显示喵喵”!!!