Docker的EXPOSE是指容器端口还是主机端口?

6
DockerfileEXPOSE 命令和 docker run 参数 --expose 用于告诉 Docker 必须暴露端口。

使用 -p 发布端口时,您可以将 外部主机端口 映射到不同的 内部容器端口,例如 docker run -p 8080:80,其中 8080主机端口80容器端口

我的问题是,EXPOSE 是指内部容器端口还是外部主机端口?

4个回答

4
EXPOSE指令记录了容器内应用程序监听的端口,关键词是“记录”。它不会改变Docker运行容器的行为,也不会发布端口,不会影响容器之间的连接能力。
无论是否暴露端口,您都需要单独发布端口才能从容器网络外部访问它。而且,无论是否暴露端口,您都可以在同一Docker网络中的容器之间建立连接。
有各种工具可以使用此镜像元数据自动发现您的应用程序。这包括使用-P标志在随机高编号主机端口上发布所有容器端口。当查询Docker引擎以确定容器的默认端口时,您还将看到反向代理(如traefik)使用此功能。

3
Dockerfile中的指令 EXPOSE 是指容器端口。

1
根据文档EXPOSE指令告知Docker容器在运行时监听指定的网络端口。因此它是指内部容器EXPOSE允许同一网络中的容器之间进行通信。但它不允许与主机或另一个网络中的容器进行通信!为了允许这样做,您需要使用-p选项发布端口。

1
"

EXPOSE只是意味着当前容器的这些暴露端口对于在同一网络中的所有容器都是可用/暴露的。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接