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