如何在 Docker 上发布 UDP 端口?

Posted

技术标签:

【中文标题】如何在 Docker 上发布 UDP 端口?【英文标题】:How do I publish a UDP Port on Docker? 【发布时间】:2015-02-20 04:21:34 【问题描述】:

如何将 UDP 端口从我的 Docker 容器转发到主机?

【问题讨论】:

【参考方案1】:

只是想我会参与 docker-compose 配置。

ports:
  - "9955:9955/udp"

【讨论】:

【参考方案2】:

使用 -p 标志并将/udp 后缀添加到端口号。

-p 53160:53160/udp

完整的命令

sudo docker run -p 53160:53160 \
    -p 53160:53160/udp -p 58846:58846 \ 
    -p 8112:8112 -t -i aostanin/deluge /start.sh

如果您在 Mac 上运行 boot2docker,请务必将 boot2docker 上的相同端口转发到您的本地计算机。

您还可以在Dockerfile 中记录您的容器需要使用EXPOSE 接收UDP(EXPOSE 不发布端口):

EXPOSE 8285/udp

这里是容器文档中涵盖的更多 Docker 网络信息的链接: https://docs.docker.com/config/containers/container-networking/ (由 cmets 中的 Old Pro 提供)

【讨论】:

(咆哮)在官方文档中根本没有,哇。 "-p=[] : 发布一个容器端口或一系列端口到主机格式:ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort"。虽然官方例子中提到了“-p 1234-1236:1234-1236/tcp”,但整体上没有匹配到“udp”或“protocol”page。 @AlexanderGonchiy 不要原谅 docker run 的文档,但Container Networking 文档中介绍了公开端口的一般格式。 Expose 应该只是端口/原型,而不是像你有工作发布那样的端口对。而且expose不发布端口,也不需要发布端口,它是文档。

以上是关于如何在 Docker 上发布 UDP 端口?的主要内容,如果未能解决你的问题,请参考以下文章

如何打开一个UDP端口? [关闭]

如何在路由器上测试远端UDP端口通不通

如何在 docker 文件中发布端口

C++ UDP Socket端口复用

如何测试udp端口是不是正常?

如何使用ZeroMQ监听和解析特定端口上的UDP数据?