在容器启动后,是否可以动态地暴露Docker端口?
如果不能,那么实现这样的功能的最佳方法是什么?
使用情况如下: 我需要短暂地暴露Java JMX端口以配置某些应用程序,然后关闭这些端口(从容器中),而不实际关闭JMX服务或修改Java应用程序。
谢谢
在容器启动后,是否可以动态地暴露Docker端口?
如果不能,那么实现这样的功能的最佳方法是什么?
使用情况如下: 我需要短暂地暴露Java JMX端口以配置某些应用程序,然后关闭这些端口(从容器中),而不实际关闭JMX服务或修改Java应用程序。
谢谢
从未找到动态打开端口的方法。
是否可以打开静态端口,并在容器内启动/停止一个转发到JMX端口的隧道。 socat或ssh可能有帮助,例如。
ssh -L<static-sourceport>:<targetserver>:<jmx-targetport> localhost
只使用静态暴露端口(没有发布到主机)启动你的java/jmx容器。
启动你的ambassador容器,它会临时发布你的jmx端口。
完成后,删除你的ambassador。
使用Docker的Weave网络,应用程序打开的任何端口都可以从网络内部访问,无需外部干预,这与前面提到的ambassador模式不同。但是,这些端口只能在应用程序所在的子网中访问。您静态公开的端口也将由Docker进行NAT,并且可在外部访问,但是一旦进入内部,就只能在内部使用。