提问者:小点点

不理解EXPOSE命令Dockerfile[dplicate]


我真的不明白Dockerfile中的以下命令

EXPOSE 8080

我构建了一个java应用程序并通过这个Dockerfile对其进行了文档化

FROM openjdk:10-jre-slim

WORKDIR /app
COPY ./target/display-console-1.0-SNAPSHOT.jar /app

CMD ["java", "-jar", "display-console-1.0-SNAPSHOT.jar"]

我的java应用程序有一个监听端口8085的控制器。所以当我从我的localhost使用它时,我只是做一些类似的事情

docker run -ti my-docker-hub-account/my-image -p 8085:8085

一切都完美无缺!

那么,命令的意义何在?

EXPOSE XXXX

在Dockerfile?

提前致谢


共2个答案

匿名用户

官方文件在目的上非常清楚

EXPOSE指令实际上并不发布端口。它作为构建映像的人和运行容器的人之间的一种文档,用于发布哪些端口。要在运行容器时实际发布端口,请在docker run上使用-p标志发布并映射一个或多个端口,或使用-p标志发布所有公开的端口并将它们映射到高阶端口。

因此,如果您使用< code>-P(大写P)选项,它会将列出的端口暴露给< code>EXPOSED(主机上的随机端口)。

它还可以为使用和重新使用这些other文件的其他人提供文档。

匿名用户

EXPOSE命令允许在指定的端口/端口范围内通过网络访问docker容器。

当您从docker容器运行Web服务时,您必须使用此命令,以便您可以从容器外部访问它。