Woo*_*Dzu 3 ubuntu ubuntu-12.04 docker docker-networking
我一直在尝试在一些容器之间启用一些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+),只要您使用默认的桥接网络并且所有容器都在同一主机上运行(当然在同一docker网络中),UDP广播即开即用。
使用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"
Run Code Online (Sandbox Code Playgroud)
与docker-compose up
将显示喵的主猫(原文如此!)。
如果要跨多个主机使用广播,则无法使用Docker随附的默认网络插件。-> https://github.com/moby/moby/issues/17814。但是像Weave 这样的更复杂的覆盖网络插件应该可以工作(我没有测试过...)
归档时间: |
|
查看次数: |
2383 次 |
最近记录: |