在Docker容器中暴露动态打开的端口

7
假设有一个在docker容器内动态打开UDP端口的应用程序,如何将这些端口暴露/绑定到外部(主机)端口?
这可能与此处提出的问题相同,但是使用--net=host的答案限制了运行多个容器实例将相同端口暴露给主机的可扩展性。
是否有任何方法可以将容器中动态打开的端口与主机进行一对一映射?
例如:在容器内打开端口45199/udp并将其暴露到主机上的端口45199/udp

在2022年动态打开Docker端口仍然是一个问题吗?你解决了吗? - blkpingu
2个回答

9

也许你可以找到一些自动转发容器主机端口的方法,但是这样会出现与主机网络相同的问题(多个容器实例可能会有端口冲突)。

在您的情况下,最好的方法可能是暴露一些端口范围,例如:

docker run --expose=7000-8000 ...

默认桥接网络情况下,请通过 IP 地址引用容器(您将需要使用 docker inspect 查看容器 IP),在用户定义网络的情况下,请通过名称引用 (https://docs.docker.com/engine/userguide/networking/configure-dns/)。


谢谢。也有其他人在这里给了我答案。 - Griffin
1
链接已损坏或为私有。 - blkpingu

1

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