-p标志是否覆盖EXPOSE?

问题描述 投票:2回答:2

我对Docker doc的EXPOSE vs -p感到困惑。以下是我的理解:EXPOSE仅用于容器间通信,不能从外部访问。

但是开发人员指南写道:“EXPOSE指令实际上并没有发布端口。它可以作为构建映像的人和运行容器的人之间的一种文档,关于哪些端口要发布。”

这是否意味着如果我将EXPOSE设置为8001并将-p设置为8002,则-p标志将覆盖EXPOSE并且容器将在8002上发布?我想我对“发布”一词感到困惑。

docker dockerfile
2个回答
1
投票

您引用的开发人员文档是准确的,Dockerfile中的EXPOSE条目是开发人员为运行映像的用户创建映像的文档。

如果你使用-P,那么docker将发布主机上所有暴露的端口(注意大写的P,不同于小写的选项)。

对于容器到容器的通信,您只需要位于同一个docker网络中。容器在应用程序正在直接侦听的端口上进行通信,不会暴露端口或发布到所需的主机。

发布端口是在运行时使用-p选项完成的,并将端口从主机映射到容器中的端口,以使其在docker之外可用。公开端口对使用-p发布没有影响,它只是文档和图像中的元数据。


0
投票

EXPOSE意味着您的容器可以通过此端口在docker网络内访问

-p旗帜意味着以上所有,但为了您的外部沟通

例如:

EXPOSE 8001 - 暴露在docker网络内部

-p 8002:8001 - 从8001内部到8002外部的端口

© www.soinside.com 2019 - 2024. All rights reserved.