Dockerdynamic公开端口

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

如果不是,那么实现这样的最佳做法是什么?

用例如下: 我需要暂时公开Java JMX Port来configuration某个应用程序,然后closures这些端口(从容器中),而不实际closuresJMX服务或修改Java应用程序。

谢谢

通过使用Docker的Weavenetworking,您可以打开应用程序的任何端口都可以从networking内部访问,而不需要外部干预,这与前面提到的大使模式不同。 但是,这些只能从应用程序所在的子网访问。 您静态显示的端口也将由Docker保持NAT,并且可以在外部访问,但是暂时的只会是内部的。

从来没有find一种dynamic打开端口的方法。

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

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

这是一个有趣的用例。 我假设你的意思是“dynamic发布 docker端口”。 如果是这样,你可以看看像大使模式,你可以做一些事情:

  1. 启动你的java / jmx容器只有一个静态暴露的端口(没有发布到主机)。

  2. 调出你的大使容器,临时发布你的jmx端口。

  3. 完成后,请移除您的大使。