当前位置: 首页 > 知识库问答 >
问题:

从docker容器到kubernetes pod的端口发布如何工作?

谭昱
2023-03-14

在学习入门教程第3部分:部署到库伯内特斯时,我偶然发现了清单文件部署定义中的Pod模板。在pod和容器部分都没有指定端口。

这就引出了我最初的问题:端口发布如何从docker容器进入pod?

下面的引语听起来像是kubernetes在启动后了解了正在运行的容器,并从侦听0.0.0.0的服务中获取端口:port并将其映射到pod环境中的同一端口(网络名称空间)。

不在此处指定端口不会阻止该端口被公开。可以从网络访问容器中侦听默认“0.0.0.0”地址的任何端口。来源

如果我的假设是正确的,那么这对有多个容器的吊舱意味着什么?kubernetes是否只允许内部服务侦听不同端口的容器?或者是否可以将容器内部端口映射到pod环境中的不同端口(网络名称空间)?

根据下面的引述,我假设从集装箱到吊舱的端口映射是不可能的。实际上,在具有相同端口的两个容器中指定两个服务并没有太大意义,只需在这之后立即通过映射来更改它们即可。

在此处公开端口可以向系统提供有关容器使用的网络连接的其他信息,但主要是信息性的。来源

更新2019-10-15

正如以下引用所述,docker容器默认情况下不会向外部世界发布任何端口。

默认情况下,创建容器时,它不会将其任何端口发布到外部世界。要使端口可用于Docker之外的服务或未连接到容器网络的Docker容器,请使用--publish或-p标志。来源

这意味着kubernetes必须以某种方式配置在pod中运行的docker容器,以便将容器的端口发布到pod。

关于下面的引文,kubernetes是否可能通过使用--网络主机配置来运行docker容器?假设pod是kubernetes中的docker主机。

如果对容器使用主机网络模式,则该容器的网络堆栈不会与Docker主机[…]隔离例如,如果您运行绑定到端口80的容器并使用主机网络,则该容器的应用程序在主机IP地址的端口80上可用。来源

共有1个答案

谢涵亮
2023-03-14

pod中运行的容器类似于连接到网络的节点上运行的进程。Pod获取网络地址,所有容器共享相同的网络地址。他们可以使用本地主机进行对话。

在pod中运行的容器可以监听该地址上的任何端口。如果在pod中运行多个容器,它们不能绑定到同一个端口,只有其中一个可以。请注意,没有发布这些端口的要求。容器可以监听任何端口,如果客户端连接到pod的该端口,流量将传递给它。

因此,从容器到pod的端口映射是不可能的。

容器/吊舱的公开端口主要是信息性的,工具使用它们来创建资源。

 类似资料:
  • 问题内容: 我通常会看到将Docker容器的端口暴露给主机的解决方案。 就我而言,我想将本地端口从一个容器转发到另一个。假设我在具有 硬编码配置的 容器A 上运行服务, 以访问localhost 3306上的db 。但是我想在 容器B 上运行数据库服务器。 从A-localhost:3306到B-IP:3306的 端口转发的最佳方法是什么? 问题答案: 在您的容器中安装并在启动运行时安装 这将在您

  • 问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口

  • 我有一个docker容器在运行Jenkins。作为构建过程的一部分,我需要访问在主机上本地运行的web服务器。有没有一种方法可以将主机web服务器(可以配置为在端口上运行)公开给jenkins容器? 编辑:我正在Linux机器上原生运行docker。 更新: 除了@larsks下面的答案之外,要从主机获取主机IP的IP地址,我还做了以下操作:

  • 问题内容: 主机可以打开Docker容器访问端口吗?具体来说,我在主机上运行了MongoDB和RabbitMQ,我想在Docker容器中运行一个进程以侦听队列并(可选)写入数据库。 我知道我可以将端口从容器转发到主机(通过- p选项),并可以从Docker容器中连接到外部环境(即Internet),但我不想公开RabbitMQ和MongoDB端口从主持人到外界 编辑:一些澄清: 我必须执行此技巧才

  • 问题内容: 如何将UDP端口从Docker容器转发到主机? 问题答案: 使用-p标志并将后缀添加到端口号。 全指令 如果在Mac上运行boot2docker,请确保将boot2docker上的相同端口转发到本地计算机。 您还可以在以下位置暴露端口: 这是容器文档中包含更多Docker网络信息的链接:https : //docs.docker.com/config/containers/contai

  • 问题内容: 我在Mac OSX上使用Docker。 我有一个带有打开的守护程序的容器,正在侦听port 。 虚拟机设置为将所有计算机端口流量转发到此容器端口。 我想将我的本地主机设置为将所有流量转发到计算机端口。 我的机器在 我已经使用Apache虚拟主机配置和Proxy将本地端口8080上的所有HTTP通信转发到了计算机。 对ssh做相同的正确方法是什么? 我认为它涉及到此处提到的SSH隧道传输