Performance Docker运行时统计信息(基准)

Performance Docker运行时统计信息(基准),performance,containers,docker,virtualization,Performance,Containers,Docker,Virtualization,我知道周围有很多docker专家,但我花了大量时间了解docker运行时性能的一些事实和数据,但不幸的是,我无法得到任何具体的答案。让我先告诉您我的系统配置: (a) 在具有48GB RAM、1TB磁盘和12核CPU的机器上运行CentOS 6.5。 (b) 我建立了一个Docker图像,大小接近6.5GB 为了读者的利益,如果有人能回答以下问题: (a) 现在对于给定的配置,问题来了,有多少容器可以并行运行而不中断任何功能 (b) 假设我有两个图像,每个图像的大小为3.5GB,那么是建议运行多

我知道周围有很多docker专家,但我花了大量时间了解docker运行时性能的一些事实和数据,但不幸的是,我无法得到任何具体的答案。让我先告诉您我的系统配置:

(a) 在具有48GB RAM、1TB磁盘和12核CPU的机器上运行CentOS 6.5。 (b) 我建立了一个Docker图像,大小接近6.5GB

为了读者的利益,如果有人能回答以下问题:

(a) 现在对于给定的配置,问题来了,有多少容器可以并行运行而不中断任何功能

(b) 假设我有两个图像,每个图像的大小为3.5GB,那么是建议运行多个小尺寸图像,还是我们可以在大尺寸图像上获得良好的性能

(c) Docker使用的最佳文件系统选项是什么

编辑:更多信息 (d) 实际上,我正试图将许多编译器放在一个容器中,并试图为用户提供在线编译语言的便利。此工具正在开发中,将取代我现有的网站compileonlone.com。事情进展顺利,我构建了两个映像,每个映像中都有很少的编译器。我能够成功运行大约250个容器,之后我开始打开太多文件。250个容器之后,我的RAM达到40GB左右,CPU利用率约为50%

我面临的主要问题是拆除旧容器。因为用户会来编译他的代码,然后离开,所以我需要在一段时间后删除这些容器,但当我试图使用docker rm-v删除这些停止的容器时,它会减慢docker主进程,并且几乎挂起。我指的是docker-d守护进程,它正在/var/run/docker.sock上侦听。不确定是否有其他方法来清洁这些容器,或者我有一个bug。以下是Docker的详细信息:

  # docker info
    Containers: 1016
    Images: 41
    Storage Driver: devicemapper
     Pool Name: docker-0:20-258-pool
     Pool Blocksize: 64 Kb
     Data file: /var/lib/docker/devicemapper/devicemapper/data
     Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
     Data Space Used: 17820.7 Mb
     Data Space Total: 102400.0 Mb
     Metadata Space Used: 102.4 Mb
     Metadata Space Total: 2048.0 Mb
    Execution Driver: native-0.2
    Kernel Version: 3.17.2-1.el6.elrepo.x86_64
    Operating System: <unknown>
    WARNING: No swap limit support
但它完全减慢了主docker进程,并且在删除进程运行时无法创建新容器

感谢您花时间回答这些问题,这将有助于我和其他许多人继续学习Docker。

a):容器就像一个过程。这个问题就像问“我可以并行运行多少个进程”。如果不知道流程在做什么,它是不负责的。请将此信息添加到您的问题中

b) 对于Docker映像而言,3.5GB和6.5GB都非常大。最佳实践是将一个应用程序放在一个容器中:如果您有一个如此大小的应用程序,那么就太棒了。如果没有,可能您已经将应用程序的数据放入了映像中。这不是一个好主意,因为分层文件系统比常规文件系统慢,并且您不需要对事务数据进行分层或快照的任何功能

说明如何装载常规磁盘,以便从容器中访问

提供更多信息后编辑
d) 使用完RAM意味着容器仍在运行。如果站点的逻辑中有某种方法可以知道何时不再需要容器,则可以
docker kill
it,然后
docker rm
移除磁盘存储。或者,
docker rm-f
将这两个操作合为一体。

经过大量的研发和与许多专家的讨论,我找到了一种快速删除容器的解决方案。使用dm.blkdiscard=false选项运行docker守护进程很简单,如下所示

docker-d——存储选项dm.blkdiscard=false

顺便说一下,这是我开发的。在这里,我需要高速创建和删除容器


希望这对其他人有帮助。

这对磁盘空间有帮助吗:
docker rmi$(docker images-q-f dangling=true)
不太好,因为图像不是问题。我想以非常快的速度移除已退出的容器。有没有办法,我可以在不涉及docker进程的情况下删除它们。
 #docker rm -v $(docker ps -a |grep Exited | awk '{print $1}')