在运行在Docker for Windows上的Docker容器中公开的端口上没有接收到UDP通信。 如何debugging?
我有一个Node.js应用程序,我将其打包到创buildFROM node:6
的Docker映像中FROM node:6
(A)或FROM hypriot/rpi-node:6
创build的映像FROM hypriot/rpi-node:6
(B)。
应用程序从端口43210读取UDP消息,并通过端口4000上的TCP进行通信。因此,在运行两个映像(使用/udp
后缀的UDP端口)时,相应的端口都是暴露的。
在RaspberryPi上运行容器B时,一切正常。 但是,在Windows 10 Pro上运行带有Docker for Windows最新版本的容器A时,应用程序不会收到任何UDP消息(Docker for Windows 17.03.0-ce-win1(10296))。
如果我通过docker port <container name>
列出暴露的端口,我得到:
4000/tcp -> 0.0.0.0:4000 43210/udp -> 0.0.0.0:43210 ... some other exposed ports
我尝试通过从另一台机器发送包到Windows主机来debuggingUDPstream量,如下所示:
"random message" | nc -u -w1 <win-host-ip> 43210
并通过以下方式在docker集装箱中收听:
docker exec <container-name> tcpdump -i eth0 udp dst port 43210
这个testing在检查TCPstream量(例如在端口4000上)时工作正常。但是,我发现检查UDPstream量对于上面的testing甚至对于使用容器B(工作)的设置都是行不通的(tcpdump没有收到任何东西)。
将RaspberryPi运行映像B连接到真正的UDPstream量源并使用docker exec <container-name> tcpdump -i eth0 udp dst port 43210
,我得到了很多输出:
18:51:22.314746 IP 192.168.42.1.51024 > 5e60d00b6b07.43210: UDP, length 13 18:51:22.453839 IP 192.168.42.1.51024 > 5e60d00b6b07.43210: UDP, length 35 18:51:22.473694 IP 192.168.42.1.51024 > 5e60d00b6b07.43210: UDP, length 23
因此,我的问题是:
- 任何提示,为什么在Docker for Windows上运行的容器没有收到UDPstream量?
- 有关如何在外部将UDPstream量debugging到Windows上的Docker容器的任何build议?