[英]Enable broadcasts between docker containers
我一直在尝试在几个容器之间启用一些UDP发现。 它调出了默认情况下容器已禁用广播,在以下情况下缺少用于inet的brd:
$ ip addr show dev eth0 27: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 00:00:01:4f:6a:47 brd ff:ff:ff:ff:ff:ff inet 172.17.0.12/16 scope global eth0 valid_lft forever preferred_lft forever
堆:
如何启用广播? 这是我到目前为止所尝试的:
ip link set dev eth0 broadcast 172.17.255.255
给出RTNETLINK answers: Invalid argument
截至目前(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
会在主猫上显示Meow (原文如此!)。
如果要在多个主机上使用广播,则无法使用docker附带的默认网络插件。 - > https://github.com/moby/moby/issues/17814 。 但是更复杂的覆盖网络插件,比如Weave 应该可以工作(我还没有测试过......)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.