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

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

有1个容器运行nginx和500个虚拟主机和500个容器每个基于一个nginx图像(每个具有不同的configuration)有什么区别?

似乎也许后面的情况(500容器)将有一个容器乘以500的内存要求。但也许docker更聪明(似乎aufs可以共享内存莫名其妙)?

基本上想知道如何设置一个系统来承载许多低stream量的wordpress实例。 为每个实例(nginx + php)创build一个新的容器是可以的?

应用程序内存占用取决于几件事情:

  1. 核心
  2. 内核资源(文件caching,networkingcaching等)
  3. 应用程序代码(包括加载的库)
  4. 静态应用程序数据
  5. 操作应用程序数据(wordpress视图,用户logging等)

所有docker集装箱共享相同的内核,所以它被所有的实例重用。 AUFS存储驱动程序允许您共享加载的应用程序代码,以便为所有容器加载一次。

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

内核资源和运营应用程序数据在任何一种情况下都不会共享。 如果用户从blogA和blogB请求一个页面,这个页面将被创build并发送给用户。

在你的情况下,最有可能一个有500个虚拟主机的nginx进程将占用更less的内存。 多less是很难说的,取决于多less博客是多lessnetworking缓冲要完成,你有一个共享的数据库和memcache服务器。 唯一可以确定的方法就是设置并观察。

但是对于容器,可以有多个盒子,所以当事情变得紧张的时候,你可以把一个容器移动到一个单独的盒子上,而不会影响其他用户,也可以让一个特定的博客更多的实例,实例在几个盒子。 看看像Docker-Swarm这样的东西。

容器的另一个优点是,你可以为个别nginxconfiguration非常简单的configuration,而不是拥有500个虚拟主机的怪物。