deployment - 对于使用Docker的多个项目,请在具有多个容器的单个主机上使用多个VM

标签 deployment docker ovh

假设我目前在Digital Ocean或AWS上托管了三个应用程序。他们每个人至少将一个VM用于数据库,并将一个或多个VM用于Web应用程序。

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

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

  • 我会浪费太多的服务器资源作为首选吗?
    我是否会因为第二遍而使基础架构过于复杂?

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

    谢谢您的帮助!

    最佳答案

  • 对于每个应用程序都需要一个完整的VM,其中包含所有内存共享和I / O内容。您可以在虚拟框上使用内存膨胀(ESXi也应该具有这样的功能,也许命名为其他功能)。在每个VM中,您都将包含docker堆栈。
  • 如果您使用本地操作系统,则只需要docker堆栈一次。

  • 您在docker镜像中使用什么操作系统? 200MB的Ubuntu?还是5MB的Alpine?如果您选择Alpine作为主机操作系统和/或镜像操作系统,则可以使“容器开销”小得多

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

    首先,我会计划一个带有Alpine docker 镜像的Alpine主机。如果某些应用确实需要Ubuntu镜像,则可以在该特定应用的镜像中使用它。

    也看看Docker vs. VM

    关于deployment - 对于使用Docker的多个项目,请在具有多个容器的单个主机上使用多个VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497443/

    相关文章:

    javascript - React 应用程序必须在新部署后清除浏览器缓存

    java - 如何为插件和库配置不同的发行版管理存储库?

    ruby-on-rails - 为什么 Travis 在部署到 Heroku 时无法连接使用 Redis cache_store?

    c++ - 将 .NET C++ 独立版移植到 Mac

    docker - Cassandra启动后运行脚本(Docker)

    docker - 多主机上的Docker集群

    docker - 每次我运行docker-compose时,Docker名称都会变长

    wordpress - WP - 对外部 API 的 cURL 调用停止工作 - cURL 错误 60 : SSL certificate problem: certificate has expired

    ssh - 是否可以从 ovh 共享主机执行 ssh?

    mysql - 通信链路故障 - 使用 PhpStorm 连接到 MySQL