为什么当我不进行 docker 容器端口映射时,我可以访问基于容器优化操作系统的 GCE?



我想在Google Cloud Platform(GCP)的Google Compute Engine(GCE)上部署我的spring-boot应用程序。我明白,当将容器分发到主机时,我必须将容器中的端口映射到主机中的端口通过以下命令:

docker run -it -p 8080:8080 spring-app

然而,当我没有做docker容器端口映射时,为什么我可以访问基于容器优化的os的GCE?

这是我在spring-boot应用程序中的Dockerfile。(iampotato是我的项目名称):

FROM adoptopenjdk/openjdk11:latest AS TEMP_BUILD_IMAGE
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
COPY build.gradle settings.gradle gradlew $APP_HOME/
COPY gradle $APP_HOME/gradle/
RUN ./gradlew -x test --info || return 0
COPY . .
RUN ./gradlew -x test build
FROM adoptopenjdk/openjdk11:latest
ENV ARTIFACT_NAME=iampotato.jar
ENV APP_HOME=/usr/app/
WORKDIR $APP_HOME
COPY --from=TEMP_BUILD_IMAGE $APP_HOME/build/libs/$ARTIFACT_NAME .
EXPOSE 8080
ENTRYPOINT java -Dspring.profiles.active=dev -jar $ARTIFACT_NAME

下面是期望的结果:

  • 我认为我不应该能够访问spring-boot应用程序,因为我没有做容器端口映射。

这个设置端口映射在docker上的容器优化的操作系统是相关的,但它并没有回答我的问题,为什么我不需要在基于容器优化的操作系统的GCE上做端口映射。

这是我的环境:

  • Spring Boot 2.7.9
  • OpenJDK 11
  • 基于容器优化操作系统的GCE
  • 码头工人20.10.12

容器端口与主机虚拟机端口一一对应。为例如,容器端口80映射到主机虚拟机端口80。计算引擎不支持端口发布(-p)标志,您也不支持必须指定它才能使映射工作。

发布容器端口

注意:这适用于容器优化的操作系统,而不是运行在普通计算引擎上的Docker。

相关内容

  • 没有找到相关文章

最新更新