首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker托管多个ip地址不同但端口相同的容器

Docker托管多个ip地址不同但端口相同的容器
EN

Stack Overflow用户
提问于 2021-03-18 10:49:07
回答 1查看 362关注 0票数 1

我有三个tomcat容器运行在不同的网桥网络上,具有不同的子网和网关,例如:

代码语言:javascript
运行
复制
container1 172.16.0.1 bridge1
container2 192.168.0.1 bridge2
container3 192.168.10.1 bridge3

这些容器运行在不同的端口上,比如8081、8082、8083

有没有办法在同一个8081中运行所有三个容器?如果可能的话,我怎么在docker里做呢?

EN

回答 1

Stack Overflow用户

发布于 2021-03-18 12:00:28

您需要设置一个reverse proxy。顾名思义,这是一个与标准代理工作方式相反的代理。标准代理从内部网络获取请求并从外部网络(internet)提供服务,反向代理从外部网络获取请求并通过从内部网络获取信息来提供服务。

有多个可用作反向代理的应用程序,但使用最多的是:

主要作为load-balancer

大多数reveres代理可以作为另一个容器运行在您的docker上。其中一些工具很容易上手,因为有大量的教程。

反向代理不仅仅是公开单个端口并将流量转发到后端端口。反向代理可以管理和分发负载(负载平衡),可以将从客户端到达的URI改变为后端能够理解的URI (URL重写),可以改变来自后端的响应(内容重写)等。

反向HTTP/HTTP流量

在您的示例中,假设您有HTTP服务,则需要执行以下操作来设置反向代理:

  1. 决定使用哪个工具。作为初学者,我建议NginX
  2. 为代理创建一个配置文件,该文件将从端口80获取请求并分发到端口8081、8082、8083。由于容器位于不同的网络上,您需要决定是将流量转发到它们的IP地址(我不建议这样做,因为IP可以更改),还是发布主机上的端口并使用主机IP。另一种选择是在机箱的同一个network.
  3. Depending上运行它们,您需要设置容器的X-Forwarding-*标志和/或URL重写和内容,并将端口80发布为8080 (如果您在主机上公开容器,则您的8081将被占用)。

反向TCP/UDP流量

如果您有非HTTP服务(原始TCPUDP服务),则可以使用HAProxy。除了配置步骤#2之外,步骤是相同的。由于流量的非HTTP性质,配置是不同的,您可以在this SO中找到示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66684072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档