5

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

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

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

谢谢

4

3 回答 3

1

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

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

ssh -L<static-sourceport>:<targetserver>:<jmx-targetport> localhost
于 2015-01-19T20:51:11.967 回答
1

这是一个有趣的用例。我假设您的意思是“动态发布docker 端口”。如果是这样,您可以研究类似大大使模式的东西,您可以其中执行以下操作:

  1. 仅使用静态暴露端口(未发布到主机)启动您的 java/jmx 容器。

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

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

于 2015-01-20T01:32:49.713 回答
1

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

于 2015-01-21T22:10:58.090 回答