如何在Docker上发布UDP端口?

165

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

2个回答

271

请使用 -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,请确保将相同的端口转发到本地机器。

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

EXPOSE 8285/udp

以下是更多关于Docker网络的信息链接,包含在容器文档中: https://docs.docker.com/config/containers/container-networking/ (感谢评论区的Old Pro)


4
官方文件中真的没有提到,哇。"-p=[] : 将容器的端口或一系列端口发布到主机 格式: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort"。虽然官方示例中提到了 "-p 1234-1236:1234-1236/tcp",但整个页面上没有匹配 "udp" 或 "protocol"。 - Alexander Gonchiy
@AlexanderGonchiy 不是为了为docker运行文档开脱,但它所提到的暴露端口的一般格式已在Container Networking文档中介绍了。 - Old Pro
2
Expose应该只是端口/协议,而不是像你的工作发布一样的端口对。Expose不会发布端口,也不需要发布端口,它只是文档说明。 - BMitch

22

我觉得我可以为docker-compose配置做出贡献。

ports:
  - "9955:9955/udp"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接