Docker 动态公开端口

Docker Expose ports dynamically

是否可以在启动容器后动态公开docker端口

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

用例如下: 我需要暂时公开 Java JMX 端口以配置某些应用程序,然后关闭这些端口(从容器),而不实际关闭 JMX 服务或修改 Java 应用程序。

谢谢

从未找到动态打开端口的方法。

打开静态端口和 start/stop 容器内转发到 JMX 端口的隧道是否有帮助。 想到 socat 或 ssh,例如

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

这是一个有趣的用例。我假设您的意思是“publish docker 动态端口”。如果是这样,您可以查看类似 grand ambassador 模式的内容,您可以在其中执行以下操作:

  1. 启动您的 java/jmx 容器,只有一个静态公开端口(没有发布到主机)。

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

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

有了 Weave network for Docker,您的应用程序可能打开的任何端口都可以从网络内部访问,无需外部干预,这与前面提到的大使模式不同。但是,这些只能从应用程序所在的子网访问。您静态公开的端口也将通过 Docker 保持 NAT 状态,并且可以从外部访问,但短暂的一次将仅供内部使用。