对于使用Docker的多个项目,使用多个虚拟机或单个主机与多个包含器

假设我有三个当前在Digital Ocean或AWS上托pipe的应用程序。 他们每个人至less使用一个虚拟机的数据库和一个或多个虚拟机的networking应用程序。

现在让我们说,我想在OVH上获得一个专用的服务器,使用64GB的内存,并使用docker来部署这些应用程序。 每个项目都有自己的docker-compose文件。 我正在考虑这样做的两种方式:

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

我会浪费太多的服务器资源去做第一select吗? 我会过度复杂我的基础设施吗?

我明白这两个都是有效的select,但是更好/build议的方式是什么?

谢谢您的帮助!

  1. 将需要一个完整的虚拟机,每个应用程序与所有memorysharing和I / O的东西。 您可能会使用虚拟机箱(ESXi应具有此function,也许命名不同)的内存膨胀。 而且在每个虚拟机中,你都会包含docker堆栈。
  2. 如果你使用本地操作系统,你只需要一次docker stack。

你在Docker镜像中使用什么操作系统? 一个200MB的Ubuntu? 还是5MB的高山? 如果您selectAlpine作为您的主机操作系统和/或您的映像操作系统,则可以将“容器开销”保持得小一些

这取决于你的应用程序需要什么样的系统服务,比如cron,暴发户,应用程序需要多less资源? 基于JVM的应用程序是否需要在每个容器中使用自己的JVM? 等等…

一开始我会计划一个阿尔卑斯高山docker的图片。 如果有应用程序真的需要Ubuntu的图像,你可以在图像中使用它的具体应用程序。

也看看Docker vs. VM