Docker动态公开端口

Docker动态公开端口,docker,dockerfile,Docker,Dockerfile,一旦容器启动,是否可以动态地公开docker端口 如果不是,实现这种目标的最佳实践是什么 用例如下所示: 我需要立即公开JavaJMX端口来配置一些应用程序,然后关闭这些端口(从容器中),而不实际关闭JMX服务或修改Java应用程序 感谢您从未找到动态打开端口的方法 打开一个静态端口并启动/停止转发到JMX端口的容器内的隧道是否有帮助。 想到socat或ssh,例如 ssh -L<static-sourceport>:<targetserver>:<jmx-targ

一旦容器启动,是否可以动态地公开docker端口

如果不是,实现这种目标的最佳实践是什么

用例如下所示: 我需要立即公开JavaJMX端口来配置一些应用程序,然后关闭这些端口(从容器中),而不实际关闭JMX服务或修改Java应用程序


感谢您从未找到动态打开端口的方法

打开一个静态端口并启动/停止转发到JMX端口的容器内的隧道是否有帮助。 想到socat或ssh,例如

ssh -L<static-sourceport>:<targetserver>:<jmx-targetport> localhost
ssh-L::localhost

这是一个有趣的用例。我假设您的意思是“动态发布docker端口”。如果是这样的话,你可以研究一些类似于模式的东西,你可以做一些类似于:

  • 仅使用静态公开端口启动java/jmx容器(不向主机发布任何内容)

  • 暂时打开发布jmx端口的大使容器

  • 完成后,撤走大使


  • 与前面提到的大使patter不同,您的应用程序可能打开的任何端口都可以从网络内部访问,而无需外部干预。但是,这些将只能从应用程序所在的子网访问。您静态暴露的端口也将由Docker保留,并且可以从外部访问,但短暂的一次仅限于内部。

    谢谢@Abdullah。我想这对我有用。我在考虑类似的概念,并建立了一个代理,当需要时会旋转起来,完成后会移除。嘿,克里斯蒂安,我认为@Abdullah的答案在大多数情况下都会起作用,对我来说也是如此。谢谢Disclamer:我是Weave团队的一员。谢谢@errordeveloper。。。这也许是最好的解决办法