我有一个在 docker 容器内运行的服务器,监听 UDP 端口,比如说 1234。这个端口在 Dockerfile 中公开。
另外,我有一个外部服务器帮助进行 NAT 遍历,基本上,只是将注册服务器和客户端的地址相互发送,并允许通过注册期间发送的名称连接到服务器。
现在,如果我使用-P
选项运行我的容器,我的端口将作为某个随机端口发布,例如 32774。但是在辅助服务器上,我看到我的服务器从端口 1234 连接到它,因此它无法发送正确的地址到一个客户。客户端根本无法连接。
如果我运行容器在同一个端口上显式发布我的服务器-p 1234:1234/udp
,客户端可以直接连接到我的服务器。但是现在在辅助服务器上,我看到我的服务器从端口 123 6连接到它,并且它再次无法将正确的端口发送到客户端。
如何解决?我的目标是要求使用我的 docker 镜像的人尽可能少地进行额外配置。
编辑:所以,我需要知道容器内部的外部端口号才能将其发送到发现服务器,据我所知,目前不可能,对吧?或者我需要从容器和我的端口进行传出连接,以使用为传入连接配置的相同外部端口 - 这可能吗?