gpt4 book ai didi

docker - 如何协调Docker容器之间的端口

转载 作者:行者123 更新时间:2023-12-02 19:49:30 26 4
gpt4 key购买 nike

我已经安装了docker以使用主机网络在服务器上托管多个容器,因此端口在所有容器之间共享。如果一个容器使用端口8000,则其他容器不能。是否有工具-可能不像k8s那样复杂,尽管我不知道是否可以做到-可以帮助我为每个容器选择端口吗?随着主机网络上服务数量的增加,管理可用端口列表变得不便。

对于为什么运行docker ps时,我仍然感到困惑,某些容器根本没有列出任何端口。如果可以轻松获得完整的端口列表,会更容易,但是我有两个容器,其中有相当数量的暴露端口列表,这些端口根本不显示任何端口。我想这是一个单独的问题,而不太重要。

最佳答案

Pod中的容器可以通过“localhost”访问;他们使用相同的网络 namespace 。另外,对于容器,可观察的主机名是Pod的名称。由于容器共享相同的IP地址和端口空间,因此应在容器中使用不同的端口进行传入连接。换句话说,Pod中的应用程序必须协调其端口使用情况。

在以下示例中,我们将创建一个多容器Pod,其中一个容器中的nginx充当在第二个容器中运行的简单Web应用程序的反向代理。

步骤1.使用nginx配置文件创建ConfigMap。到端口80的传入HTTP请求将转发到localhost上的端口5000
步骤2.使用简单的Web应用程序和nginx在单独的容器中创建一个多容器Pod。请注意,对于Pod,我们仅定义了nginx端口80。在Pod外部将无法访问端口5000。
步骤3.使用NodePort服务公开Pod:
$ kubectl公开pod mc3 --type = NodePort --port = 80
服务“mc3”暴露
现在,您可以使用浏览器(或curl)导航到节点的端口以访问Web应用程序。

Pod中的多个容器在不同的端口上侦听是很常见的-所有这些都需要暴露。为此,您可以创建一个具有多个暴露端口的单一服务,也可以为您要暴露的每个污点创建单一服务。

关于docker - 如何协调Docker容器之间的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61788961/

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