启动容器后,是否可以动态公开 docker 端口?
如果没有,实现这样的目标的最佳实践是什么?
用例如下: 我需要暂时公开 Java JMX 端口以配置某些应用程序,然后关闭这些端口(从容器中),而无需实际关闭 JMX 服务或修改 Java 应用程序。
谢谢
启动容器后,是否可以动态公开 docker 端口?
如果没有,实现这样的目标的最佳实践是什么?
用例如下: 我需要暂时公开 Java JMX 端口以配置某些应用程序,然后关闭这些端口(从容器中),而无需实际关闭 JMX 服务或修改 Java 应用程序。
谢谢
从未找到动态打开端口的方法。
打开静态端口并在容器内启动/停止转发到 JMX 端口的隧道是否有帮助。想到 socat 或 ssh,例如
ssh -L<static-sourceport>:<targetserver>:<jmx-targetport> localhost
这是一个有趣的用例。我假设您的意思是“动态发布docker 端口”。如果是这样,您可以研究类似大大使模式的东西,您可以在其中执行以下操作:
仅使用静态暴露端口(未发布到主机)启动您的 java/jmx 容器。
调出您的大使容器,它会临时发布您的 jmx 端口。
完成后,移除你的大使。
使用Docker 的 Weave 网络,您的应用程序可能打开的任何端口都可以从网络内部访问,无需外部干预,这与前面提到的大使模式不同。但是,这些只能从应用程序所在的子网访问。您静态公开的端口也将由 Docker 进行 NAT,并且可以从外部访问,但短暂的一次只能在内部访问。