Docker复制UDP数据包

我在用UDP做Docker的基本testing。 我在端口8000 / UDP上启动一个容器:

docker run -p 8000:8000/udp jgkamat/netcat -l -u -p 8000 

我看到这个港口的交通:

 ngrep -W byline -d any portrange 8000 

我发送一个UDP数据包:

 nc -u <ip-address> 8000 

这是ngrep的结果:

 filter: (ip or ip6) and ( portrange 8000 ) # U <my-public-ip>:37704 -> 192.168.0.4:8000 hello............. # U <my-public-ip>:37704 -> 172.17.0.2:8000 hello. # U <my-public-ip>:37704 -> 172.17.0.2:8000 hello. 

任何人都可以解释为什么数据包是重复的?

您正在看到正在转发的相同udp包的过境:

 netcat -(hello)-> host-interface -(hello)-> container-interface 

每个容器都有自己的networking接口。 ngrep正在监视两个主机接口:一个是eth0 ,一个是docker0networking中的接口,通常是docker0