docker - 使用 Docker 映射 Compute Engine 中的端口

标签 docker spring-boot google-cloud-platform google-compute-engine

我有一个在 Google Compute Engine 上运行的 docker 镜像。该镜像包含一个在端口 9000 上运行的 Spring Boot 应用程序。

公开于 http://<ip>:9000我可以毫无问题地访问。我正在尝试将公开端口配置为 80以便将 DNS 记录配置为仅指向 IP 地址。

我的问题是如何实现这一点,因为文档让我感到困惑。我正在使用在线 GCP 控制台(Web 界面)进行部署,并且没有字段可以指定 docker run -p 9000:80命令可以解决我的问题(如果有,请纠正我)。

那么我需要在 Spring Boot 设置中重新映射端口吗?或者在 Docker 容器内?或者我应该在GCP中配置一些转发规则?感谢您的澄清!

我的DOCKER文件如下所示:

FROM gcr.io/distroless/java
VOLUME /tmp
ADD build/libs/*.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-jar","app.jar"]

我正在使用 GCP 的容器优化操作系统。

最佳答案

tldr:你不能

当您以这种方式在计算引擎中部署容器时,docker网络位于 host network mode ,这意味着 ( doc ) : a container shares the host's network stack and all interfaces from the host are available to the container.

因此计算引擎将直接在他自己的接口(interface)上公开容器端口。因此,您必须配置容器以公开正确的端口。

关于docker - 使用 Docker 映射 Compute Engine 中的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52265028/

相关文章:

html - Thymeleaf:如何使用具有可变限制的#numbers.sequence()?

docker - docker中的Grails应用程序,安装spring-security插件?

docker - 是否可以从主机操作系统文件系统访问 Kubernetes 中已安装的卷

java - Spring boot 2.0.3 thymeleaf 渲染某些页面时出错

spring-boot - springdoc-openapi-ui 将 header 参数添加到生成的 swagger

google-cloud-platform - GCP 中的 "Domain Restricted Sharing"是否会阻止服务帐户获取 IAM 权限?

apache-spark - Spark 作业未显示在 Google Cloud 的 Hadoop UI 中

python-2.7 - 在 Google Cloud Dataflow 中访问模板化运行时参数 - Python

laravel - Laradock 不支持 mysql

docker 丢弃功能未按预期工作?