Я "докетирую" приложение, которое UDP транслирует сердцебиение на известном порту. Это с докер-двигателем-1.7.0 на различных хостах (Fedora, Centos7, SLES 12).
Я заметил, что мост "docker0" на хосте docker и "eth0" внутри контейнера имеет широковещательный адрес 0.0.0.0.
Предполагая права администратора на хосте, я могу вручную установить широковещательный адрес на docker0. Аналогично в контейнере (если контейнер работает с привилегиями или с NET_ADMIN, NET_BROADCAST), но мне любопытно, почему широковещательный адрес не задан по умолчанию. Есть ли вариант конфигурации, который мне не хватает для Docker, чтобы сделать это автоматически?
Ведущий:
# ifconfig docker0 broadcast 172.17.255.255 up
# tcpdump -i docker0 -p 5000
Контейнер:
# ifconfig eth0 broadcast 172.17.255.255 up
# echo "Hello world" | socat - UDP-DATAGRAM:172.17.255.255:5000,broadcast
Передача от хоста к контейнеру также работает после установки широковещательных адресов.