您能为单个服务器上的多个 Docker 容器提供公共 IP 地址吗?

您能为单个服务器上的多个 Docker 容器提供公共 IP 地址吗?

我想在一台服务器上拥有多个 Docker 容器,并让它们都托管 Web 应用程序。如果我只设置了一个 Docker 容器,我可以在 Docker 容器上公开端口 80,并通过物理服务器的公共 IP 地址连接到 Docker 容器。但是,我希望两个 Docker 容器都在物理服务器的端口 80 上运行,并且可以通过与物理 Docker 服务器位于同一网络上的服务器的不同 IP 地址访问。这可能吗?如果可以,我该如何实现?我一直在做一些研究,但还没有找到办法,所以任何建议都值得感激。

答案1

您不能让两台设备共享同一个 IP 地址,否则会导致连接和流量问题。在较低层,网络硬件使用 MAC 地址(每个设备都应该是唯一的)来决定将与给定连接相关的流量发送到何处。将另一台设备放在 LAN 上,如果 IP 地址已被使用,则会导致数据包随机传送到每个设备。一台主机可能正在等待已建立连接的 ACK 数据包,但它永远不会收到它,因为它已转到另一台主机。

如果你想要一个“备用”docker 镜像,当“热”镜像宕机时,该镜像会自动开始提供内容,请查看HAProxy。如果您希望在两个容器之间分发请求,请查看路由域名系统。这些是让多个主机同时在线的一些最便宜/最简单的方法。

这两种选择都涉及与“负载平衡”或“容错”有关的技术。还有其他选择,但取决于你想投入多少时间、金钱和精力。

相关内容