为什么我需要" - 暴露" Docker中的选项?

时间:2016-02-27 15:09:42

标签: docker

我很担心" - 曝光" Docker中的选项,我不知道它实际上会做什么。

当我在" docker run ..."中指定它(例如, - exp = 1234)时,端口将在哪里曝光?我不认为我可以访问主机端口,如果我想要,我认为我需要的是" -p",那么" - 暴露"会真的吗?

我想如果我想从主机访问容器端口,我需要的是,让容器中的服务监听端口,使用" -p" " docker run"中的选项在主机上发布端口。或者在这种情况下,我仍然需要使用" - 曝光"暴露端口?

1 个答案:

答案 0 :(得分:2)

-p将允许您映射已经EXPOSE的端口(在Dockerfile中设置)。

但是如果该端口在Dockerfile及其生成的图像中没有EXPOSE,您仍然可以使用--expose公开它:

来自docker run

  

EXPOSE指令定义了提供服务的初始传入端口。这些端口可用于容器内的进程。操作员可以使用--expose选项添加到公开的端口。

这是一种通过在运行时公开该端口来覆盖图像定义(不暴露端口)的方法。
实际上"覆盖"是PR 14625PR 15675中提到的错误术语:

  

EXPOSE指令外,图像开发人员还没有   对网络有很大的控制权。 EXPOSE指令定义了   提供服务的初始传入端口。这些端口可用   容器内的过程。
  运营商可以使用 --expose选项添加到公开的端口

("在这里添加"关键:您可以在运行时声明其他端口)

正如我在评论中提到的,这与EXPOSE端口上的活动无关(它不能保证进程正在监听容器内的端口)
它只是一种声明open port的方法,即接收数据包的端口。