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

标签 docker

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

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

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

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

最佳答案

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

  • 内核
  • 内核资源(文件缓存、网络缓冲区等)
  • 应用程序代码(包括加载的库)
  • 静态应用数据
  • 操作应用程序数据(wordpress View 、用户记录等)

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

    容器之间永远不会共享静态和操作应用程序数据。因此,您将此足迹乘以 500。

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

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

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

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

    关于docker - 多个具有相同图像和内存使用情况的 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41991664/

    相关文章:

    docker - systemctl start kubelet 从主节点删除 docker 镜像

    python - docker通过python docker SDK登录ECR

    docker - 为什么我不能使用Dockerfile访问容器,但是可以使用docker-compose访问容器?

    python - 在 docker 中部署一个最小的 flask 应用程序 - 服务器连接问题

    docker - 从 docker 安装的 Nextcloud。如何下载和安装自定义应用程序?

    docker - 我的 PHP 如何识别它是通过 Docker 还是 Xampp 运行?

    docker - Cyber​​ark Conjur 服务器的设置

    ubuntu - 无法从主机连接到 Docker 上的 Flask 应用程序

    Docker 容器发布的端口无法访问?

    docker - 使用 docker-compose 时无法连接到 postgres