Docker UDP 端口绑定失败并暴露

Docker UDP 端口绑定失败并暴露

我有一个容器,它运行一个服务器,该服务器侦听端口 5000 以进行 UDP 连接。Dockerfile 已设置 EXPOSE 5000/udp,当我运行容器时,我可以看到 PORTS 正确地具有 5000/udp。

但是它并没有像预期的那样工作,因为客户端无法连接到它。更令人困惑的是,netcat 可以通过 udp 顺利连接到端口 5000。

我可以通过手动指定 -p 5000:5000/udp 来使一切正常工作。这样就没问题了,但我必须在 swarm 中运行此容器,而 --publish 5000:5000/udp 似乎不起作用。

知道我在这里做错了什么吗?

答案1

经过一番挖掘,我终于找到了答案。EXPOSE 不会“发布”端口,因此您必须使用 -p 发布端口。至少对我来说,问题是在 swarm 中,端口无法在复制模式下正确发布。

解决方案是在全局模式下创建一个服务,并将发布模式设置为主机:

--publish published=5000,target=5000,protocol=udp,mode=host --mode=global

相关内容