对于使用 Docker 的多个项目,使用多个 VM 或具有多个容器的单个主机
For multiple projects using Docker, use Multiple VMs or Single Host with multiple containters
假设我有三个应用程序目前托管在 Digital Ocean 或 AWS。他们每个人至少使用一台 VM 用于数据库,使用一台或多台 VM 用于 Web 应用程序。
现在假设我想在 OVH 获得一台配备 64GB RAM 的专用服务器,并使用 docker 来部署这些应用程序。每个项目都有自己的 docker-compose 文件。我正在考虑两种方法:
- 在服务器上安装 VMWare Esxi,为每个项目创建一个 VM,并为 Web 和数据库部署 docker 个容器。
- 只需安装 Ubuntu 作为主机 OS 并为每个项目使用单独的网络入口点 (IP) 管理所有应用程序的容器。
第一选择会浪费太多服务器资源吗?
如果选择第二个,我的基础架构是否会过于复杂?
我知道这两个都是有效的选择,但是 better/suggested 方法是什么?
感谢您的帮助!
- 每个应用程序都需要一个完整的虚拟机,其中包含所有内存共享和 I/O 内容。您可以将内存膨胀与虚拟框一起使用(ESXi 应该也有这样的功能,可能名称不同)。在每个 VM 中,您都将包含 docker 堆栈。
- 如果您使用本机 OS,您只需要 docker 堆栈一次。
您在 docker 图片中使用了什么 OS? 200MB Ubuntu?还是 5MB 的 Alpine?如果您选择 Alpine 作为您的主机 OS and/or 您的图像 OSes 您将能够使您的 "container overhead" 小得多
这取决于您的应用程序需要哪些系统服务,例如 cron、upstart……应用程序需要多少资源?是基于 JVM 的应用程序需要在每个容器中都有自己的 JVM 吗?等等...
首先,我会计划一个带有 Alpine docker 图片的 Alpine Host。如果有应用确实需要 Ubuntu 图片,您可以在特定应用的图片中使用它。
也看看Docker vs. VM
假设我有三个应用程序目前托管在 Digital Ocean 或 AWS。他们每个人至少使用一台 VM 用于数据库,使用一台或多台 VM 用于 Web 应用程序。
现在假设我想在 OVH 获得一台配备 64GB RAM 的专用服务器,并使用 docker 来部署这些应用程序。每个项目都有自己的 docker-compose 文件。我正在考虑两种方法:
- 在服务器上安装 VMWare Esxi,为每个项目创建一个 VM,并为 Web 和数据库部署 docker 个容器。
- 只需安装 Ubuntu 作为主机 OS 并为每个项目使用单独的网络入口点 (IP) 管理所有应用程序的容器。
第一选择会浪费太多服务器资源吗? 如果选择第二个,我的基础架构是否会过于复杂?
我知道这两个都是有效的选择,但是 better/suggested 方法是什么?
感谢您的帮助!
- 每个应用程序都需要一个完整的虚拟机,其中包含所有内存共享和 I/O 内容。您可以将内存膨胀与虚拟框一起使用(ESXi 应该也有这样的功能,可能名称不同)。在每个 VM 中,您都将包含 docker 堆栈。
- 如果您使用本机 OS,您只需要 docker 堆栈一次。
您在 docker 图片中使用了什么 OS? 200MB Ubuntu?还是 5MB 的 Alpine?如果您选择 Alpine 作为您的主机 OS and/or 您的图像 OSes 您将能够使您的 "container overhead" 小得多
这取决于您的应用程序需要哪些系统服务,例如 cron、upstart……应用程序需要多少资源?是基于 JVM 的应用程序需要在每个容器中都有自己的 JVM 吗?等等...
首先,我会计划一个带有 Alpine docker 图片的 Alpine Host。如果有应用确实需要 Ubuntu 图片,您可以在特定应用的图片中使用它。
也看看Docker vs. VM