gpt4 book ai didi

docker - 暴露 Docker 端口的问题

转载 作者:行者123 更新时间:2023-11-28 22:48:07 27 4
gpt4 key购买 nike

我正在尝试使用 tomcat Docker 镜像打包一个 war 文件。我正在尝试在图像中公开 tomcat 端口以供外部访问。

这是我的docker文件

 FROM tomcat8:3.0.0

COPY target/hello-world-war-1.0.0.war /usr/local/tomcat/webapps

EXPOSE 8080

但是,当我构建此镜像、运行它并尝试从我的主机浏览器 (localhost:8080) 进行访问时,它没有到达端点,因此它没有按预期工作

我仍然需要使用 -p 开关在外部公开端口。

我错过了什么?还是 EXPOSE 的用法?

我的最终需求是能够在 kubernetes 中部署它。

最佳答案

What have I missed?

您需要以某种方式发布端口:

  • 通过在 docker run 命令中直接发布它,使用(注意小写 p)将 EXPOSE Dockerfile 指令重新映射到不同的主机端口:

    -p=[]      : Publish a container᾿s port or a range of ports to the host
  • 或者,如 docker documentation 中所述,使用(注意大写 P)隐式发布 EXPOSE Dockerfile 指令中列出的端口:

    -P         : Publish all exposed ports to the host interfaces

My end need is to be able to deploy this in kubernetes.

为了实现该目标,您将以类似方式使用 k8s list 中列出的端口。比如说,您在 docker 镜像中公开端口 8080(并使用 -p 或 -P 发布它),然后您将在容器规范中使用它(具体 list 取决于所选的 k8s 对象类型)并且很可能稍后在服务 list 中使用它,并且在每一层中,您都可以更改端口映射(类似于 docker run -p 将 host:docker 端口映射到不同的值,如果您需要的话)。因此,就 k8s 而言,如果您在 Dockerfile 中EXPOSE 端口并且它在本地容器中以及通过任何发布方式在主机上正常工作(docker run with -p或 -P)它也将在 kubernetes 中运行(只要你在适当的 list 文件中列出它)。

关于docker - 暴露 Docker 端口的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com