我对 Docker 中的“--expose”选项感到困惑,我不知道它实际上会做什么。
当我在“docker run ...”中指定它(例如,--expose=1234)时,端口将在哪里暴露?我不认为我可以访问主机中的端口,如果我想要的话,我认为我需要的是“-p”,那么“--expose”实际上会做什么?
我想如果我想从主机访问容器端口,我需要的是,让容器中的服务监听该端口,使用“docker run”中的“-p”选项将端口发布到主机上。或者在这种情况下,我仍然必须使用“--expose”来公开端口?
-p将允许您映射已经暴露的端口(如 Dockerfile 中设置)。
但是,如果该端口未在 Dockerfile 及其生成的映像中 EXPOSE,您仍然可以使用以下命令公开它--expose:
该
EXPOSE指令定义了提供服务的初始传入端口。这些端口可供容器内的进程使用。操作员可以使用该--expose选项添加到公开的端口。
这是一种通过在运行时公开该端口来覆盖图像定义(未公开端口)的方法。
实际上“覆盖”是错误的术语,如PR 14625和PR 15675中提到的:
除了该指令之外
EXPOSE,图像开发人员对网络没有太多控制权。该EXPOSE指令定义了提供服务的初始传入端口。这些端口是容器内可用的进程。
操作员可以使用该--expose选项添加到公开的端口。
(“添加”是这里的关键:您可以在运行时声明其他端口)
正如我在评论中提到的,这与端口上的活动无关EXPOSE(它不能保证进程正在侦听容器内的端口)
它只是声明开放端口的一种方式,即端口它将接受数据包。
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |