具有相同图像和内存使用的多个docker容器

时间:2017-02-01 23:20:02

标签: docker

我有一个关于码头工具的基本问题,我似乎无法得到答案。

运行nginx的一个容器和500个虚拟主机以及每个基于nginx映像的500个容器(每个都有不同的配置)有什么区别?

似乎可能后来的情况(500个容器)会有一个容器的内存需求乘以500.但也许docker比那个更聪明(似乎aufs可以以某种方式共享内存)?

基本上想知道如何设置一个系统来托管许多低流量的wordpress实例。可以为每个实例(nginx + php)创建一个新容器吗?

1 个答案:

答案 0 :(得分:3)

应用程序内存占用取决于几个方面:

  1. 内核
  2. 内核资源(文件缓存,网络缓冲区等)
  3. 应用程序代码(包括加载的库)
  4. 静态应用程序数据
  5. 运营应用程序数据(wordpress视图,用户记录等)
  6. 所有docker容器共享相同的内核,因此所有实例都会重用它。 AUFS存储驱动程序允许您共享加载的应用程序代码,以便它也为所有容器加载一次。

    容器之间永远不会共享静态和可操作的应用程序数据。所以你把这个足迹多了500个。

    在任一情况下都不会共享内核资源和操作应用程序数据。如果用户从blogA和blogB请求页面,则无论如何都将创建该页面并将其发送给用户。

    在您的情况下,最有可能一个具有500个虚拟主机的nginx进程将占用更少的内存。通过多少很难说,取决于博客有多忙,要做多少网络缓冲,你有一个共享数据库和内存缓存服务器。唯一确定的方法是设置和观察。

    然而,对于容器,您可以拥有多个盒子,因此当事情变得紧张时,您可以将一个容器移动到一个单独的盒子而不会影响其他用户,如果它变得非常可以,您可以制作更多特定博客的实例繁忙并将实例传播到几个盒子上。看看像Docker-Swarm这样的东西。

    容器的另一个优点是,您可以为单个nginx配置非常简单的配置,而不是具有500个虚拟主机的怪物。