我有一个关于 docker 的非常基本的问题,我似乎无法得到答案。
有 1 个运行 nginx 的容器和 500 个虚拟主机和 500 个基于 nginx 镜像的容器(每个都有不同的配置)有什么区别?
似乎后一种情况(500 个容器)将容器的内存需求乘以 500。但也许 docker 比这更聪明(似乎 aufs 可以以某种方式共享内存)?
基本上想知道如何设置一个系统来托管许多低流量的 wordpress 实例。可以为每个实例(nginx + php)创建一个新容器吗?
最佳答案
应用程序内存占用取决于几个方面:
所有 docker 容器共享同一个内核,因此它被所有实例重用。 AUFS 存储驱动程序允许您共享加载的应用程序代码,以便它也为所有容器加载一次。
容器之间永远不会共享静态和操作应用程序数据。因此,您将此足迹乘以 500。
内核资源和操作应用程序数据在任何一种情况下都不会共享。如果用户从 blogA 和 blogB 请求页面,则无论如何都会创建该页面并将其发送给用户。
在您的情况下,一个具有 500 个虚拟主机的 nginx 进程很可能会占用更少的内存。多少很难说,取决于博客有多忙,要完成多少网络缓冲,您是否有共享数据库和内存缓存服务器。唯一确定的方法是设置并观察。
但是对于容器,您可以有多个盒子,所以当事情变得紧张时,您可以将一个容器移动到一个单独的盒子,而不会影响其他用户,如果某个博客变得非常繁忙和传播,您也可以制作更多实例多个盒子上的实例。看看像 Docker-Swarm 这样的东西。
容器的另一个优点是您可以为单个 nginx 进行非常简单的配置,而不是拥有 500 个虚拟主机的怪物。
关于docker - 多个具有相同图像和内存使用情况的 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41991664/