Docker动态展示端口

时间:2015-01-19 10:35:23

标签: docker dockerfile

启动容器后,是否可以动态公开docker ports

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

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

由于

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

  2. 打开你的大使容器,暂时发布你的jmx端口。

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

答案 2 :(得分:1)

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