Docker容器:服务与完整应用程序

Joe*_*use 6 docker

我正在和自己讨论如何思考和使用Docker容器.

从文献和示例看来,容器应该真正提供服务或堆栈的一部分.例如,容器可能运行MySQL,Apache或redis等等.我能理解为什么这很干净,而且很有意义.

在我们的场景中,我们希望在同一台服务器上托管多个完全独立的Web应用程序(电子商务商店,wordpress站点,静态网站,node.js应用程序),我们希望使用Docker.因此,对于我来说,每个容器完全是自容器更有意义,整个堆栈本身就是例如我的每个可能运行的wordpress容器中的每一个都有自己的LAMP安装.

将one-container-one-service模型应用于此场景似乎非常复杂 - 每个应用程序都依赖于系统中的其他容器,而这些容器又将依赖于其他容器.如果您需要特定服务的多个版本,该怎么办?

虽然这似乎是要走的路,但它似乎也可能非常低效?我不是LXCs如何工作的专家,但即使一切都集装箱化,真的有所有的Apache2工人和mysqlds系统上运行,与所有的相关的开销 - 在那里将是性能问题?

有人有想法吗?

Tho*_*rig 3

我更喜欢每个应用程序一个容器的方法。如果将每项服务放入单个映像/容器中,您将具有一些优势:

  • 您可以轻松地构建新堆栈,使用 Apache 而不是 Nginx。
  • 您可以重用组件,例如,我使用每个应用程序部署相同的 Logstash 映像来收集日志。
  • 您可以使用 Docker Index(现在称为 Docker Hub)中的预定义服务。如果您需要设置 Memcached 服务,只需拉取镜像即可。
  • 您可以控制每项服务,例如停止它或更新它。如果您想更新您的应用程序,您只需要重建单个图像,并且只上传/下载单个图像。

由于 LXC 和 Docker 似乎非常高效,所以我不介意使用多个容器。这就是 Docker 的设计目的。我认为你会有一个合理的数量,比如说 <100 个容器。所以这应该不是问题。