从主机发送udp数据包,但不从容器发送数据

时间:2018-08-16 01:16:03

标签: docker udp containers statsd datadog

如果我在主机(ubuntu)上运行此命令

echo "PD.file.processing:1|c" | nc -w 1 -u localhost 8125

它很好地发送了udp数据包,并且在端口8125上运行的dogstatsd代理将其捡起,我可以看到它。 但是当我在同一主机上的docker容器上运行以下命令时 这是我执行docker ps时容器的端口映射

8125/udp, 0.0.0.0:20019->8080/tcp, 0.0.0.0:20018->8443/tcp, 0.0.0.0:20017->11400/tcp, 0.0.0.0:20016->11401/tcp, 0.0.0.0:20015->11402/tcp

echo "MD.file.returned.success:1|c" | nc -w 1 -u 172.17.0.1 8125

这不会击中主机,并且不会被8125主机上运行的dogstatsagent捕获 这是Dockerfile中公开的代码行

EXPOSE 8125/udp

我做错什么了吗?

1 个答案:

答案 0 :(得分:0)

EXPOSE不会将容器端口发布到主机。它更多地用于记录意图,被认为是良好实践。然后,通常您也需要发布端口(例如--publish=8125:8125)。

但是,您想获得相反的结果-IIUC-并使容器的主机端口可访问。一种执行此操作的方法是使用--net=host运行容器。然后,您的容器可以访问主机的8125端口。

而且,如果您确实想访问容器的任何端口,则可以使用发布 而无需访问。

相关问题