1

假设我有三个当前托管在 Digital Ocean 或 AWS 上的应用程序。它们中的每一个都至少为数据库使用一个 VM,为 Web 应用程序使用一个或多个 VM。

现在假设我想在 OVH 获得一台具有 64GB RAM 的专用服务器,并使用 docker 来部署这些应用程序。每个项目都有自己的 docker-compose 文件。我正在考虑两种方法:

  1. 在服务器上安装 VMWare Esxi,为每个项目创建一个 VM,并为 web 和数据库部署 docker 容器。
  2. 只需将 Ubuntu 安装为主机操作系统,并为每个项目使用单独的网络入口点 (IP) 管理所有应用程序的容器。

我会浪费太多的服务器资源来选择首选吗?我是否会因为选择第二个而使我的基础设施过于复杂?

我知道两者都是有效的选择,但是更好/建议的方法是什么?

谢谢您的帮助!

4

1 回答 1

0
  1. 每个应用程序都需要一个完整的虚拟机,其中包含所有内存共享和 I/O 内容。您可以将内存气球与虚拟盒一起使用(ESXi 也应该有这样的功能,可能名称不同)。在每个 VM 中,您都将包含 docker 堆栈。
  2. 如果您使用本机操作系统,您只需要一次 docker 堆栈。

您在 docker 映像中使用什么操作系统?一个 200MB 的 Ubuntu?还是 5MB 高山?如果您选择 Alpine 作为您的主机操作系统和/或您的映像操作系统,您将能够使您的“容器开销”更小

这取决于您的应用程序需要哪些系统服务,例如 cron、upstart 等……应用程序需要多少资源?是基于 JVM 的应用程序需要在每个容器中都有自己的 JVM 吗?ETC...

首先,我会计划一个带有 Alpine docker 图像的 Alpine Host。如果有真正需要 Ubuntu 映像的应用程序,您可以在该特定应用程序的映像中使用它。

也看看Docker 与 VM

于 2016-02-19T08:29:18.983 回答