在Docker容器内暴露dynamic打开的端口

假设一个应用程序dynamic地打开Docker容器中运行的UDP端口,如何将这些端口暴露/绑定到外部(主机)端口?

这可能与此处提出的问题相同,但答案(使用--net=host )限制了运行多个容器实例的可扩展性,从而将相同的端口暴露给主机。

有什么办法可以configuration主机容器中dynamic打开的端口的一对一映射吗?

例如,端口45199/udp在容器内部打开,并暴露在主机上的端口45199/udp上?

也许你可以find一些方法来从容器主机自动引导端口,但是在主机联网的情况下(如果有多个容器实例,可能的端口冲突),你将会遇到同样的问题。

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

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

如果使用用户定义的networking( https://docs.docker.com/engine/userguide/networking/ ),则在默认桥接networking的情况下(您将不得不使用docker inspect来容器IP)或通过名称来引用容器configure-dns / )。