当前位置: 首页 > news >正文

docker内存阀值_有关Docker的八个令人难以置信的事实

这一年Docker技术蓬勃发展,Datadog公司从其独特的视角,基于其监控的第一手数据,分析报告了Docker使用相关的八大事实,同时也详细介绍了他们取样,分析的方法论。很有意思,值得一读。

数以千计的公司使用Datadog来跟踪基础架构,所以我们能够实时看到正在涌现的软件趋势。今天很激动得和大家分享关于Docker真正使用的情况 — 没有吹嘘,只列事实。

Docker大概是2015年谈论最多的基础架构技术。我们启动这个项目来调研有多少Docker真正用在生产环境里,真正使用的增长速度是怎样的。我们发现了这些问题的答案– 并且同时发现了一些更加精彩的内容。

本文研究基于7000个公司的采样,并且跟踪了真实使用场景,而不仅仅只是看使用报告。就我们所知,这是所发表的最为精准的Docker使用情况汇报。

本文使用如下词汇描述企业使用状态:“已使用(adopted)”,“尝试中(dabbling)”,和“已放弃(abandoned)”。下文方法论章节讲述了如何评测使用状态。

事实一:Docker的真正使用在一年里上升了五倍

在2014年九月初,Datadog 1.8%的客户已经使用了Docker。一年后,这个数字增长到8.3%。在12个月里几乎增长了五倍。

事实二:Docker在我们监控的6%的主机上运行

这是很让人吃惊的事实:一年前Docker几乎还没有任何市场份额,现在它已经运行在我们监控的6%的主机上。6%听上去不是个绝对高的数字,但是基于我们监控了120种不同技术,这个数字的确可以说明它在用户技术栈上已经非常重要了。

但是,如下表所示,主机数百分比的增长自上个季度开始似乎有所停滞。这可能是季节因素导致的,大型基础架构项目通常在暑假之后会停止。我们很感兴趣来继续观察这个季度的情况。

事实三:越大型的公司使用越早

这个现象驳斥了公司越大动作越慢的说法。一个使用越多主机的公司,更有可能已经尝试了Docker,也更有可能已经使用了Docker。这个现象很令人吃惊,因为一个公司使用了越多的主机,那么只有它使用了更多数量的Docker容器时,才会将其归类为“使用者”。如下文方法论章节所述,这个发现在不同基础架构规模分割阀值的情况下都适用。

事实四:尝试Docker的2/3的公司最终使用了它

这条还是好消息。我们惊讶得发现这么多尝试Docker的公司最终都迅速使用了它。大部分想要使用Docker的公司在最初生产环境上使用的30天内就完成了转变,其余使用者在60天内完成了转变。

事实五:五个月内用户容器数量扩大了三倍

使用者和尝试者都在其第一次使用到第六个月使用之间,生产环境运行容器的平均数量扩大了三倍。这样使用量的增长 — 即便在尝试者里 — 对于Docker而言也是大好消息。

事实六:使用最为广泛的镜像是Registry,NGINX和Redis

Docker里运行的最常用技术是:

Registry:运行Docker的公司中25%的公司正在使用Registry,可能用其来代替Docker Hub。

NGINX:Docker看来被用来包含了很多HTTP服务器。很有意思的是Apache(httpd)并不是前十名。

Redis:流行的内存内键值数据存储,通常用来作为内存内数据库,消息队列,或者缓存。

Ubuntu:依然是构建镜像的默认选择。

Logspout:用来从主机上的所有容器里收集日志,并且将日志路由到任意需要的地方。

MongoDB:使用广泛的NoSQL数据库。

Elasticsearch:全文本搜索。

CAdvisor:Kubernetes用来从容器里收集度量参数。

MySQL:使用最为广泛的开源数据库。

Postgres:使用第二广泛的开源数据库。将Postgres和MySQL的数量相加,可见使用Docker运行关系型数据库非常常见。

事实七:Docker主机通常一次运行四个容器

使用Docker的公司在每个主机上平均同时运行四个容器。这个发现似乎表明Docker实际上通常被作为共享计算资源的轻量级方式;其价值不仅仅在于提供可知的,版本化的运行时环境。

事实八:VM的生命周期比容器长四倍

在使用Docker的公司里,容器的平均生命周期是3天,但是在所有公司里,传统和基于云的VM的生命周期为12天。

正如事实七所讨论,通常在主机上会同时运行4个容器。因此可以在一般VM的生命周期里运行16个容器(4代4个同步容器)。但是基于不均衡的分布情况,通常实际在VM的生命周期里会运行9个容器。

容器更短的生命周期以及增长的密度对于基础架构监控而言意义深远。它表示某个事物的个数呈数量级增长,需要单独监控。监控方案是围绕主机的,而不是围绕可能快速就不可用的角色。因此我们期待Docker能持续驱动几年前云计算开始引发的监控实践的进步。

方法论

样本

如介绍所述,使用的数据来自于7000家公司的采样,因此本文应该是已发表的Docker使用情况调查里最精准的。但是,Datadog的客户倾向于“早期使用者”,以及更谨慎对待软件基础架构的公司。由于数据来自于我们的客户,本文的所有结论会带有倾向性,是全球市场的不完全样本。

平均值

当提到客户基准里的平均数值时(比如,平均容器生命周期),我们并不是指样本的均值。而是会计算出单独用户的平均值,然后报告客户数值的中位数。我们发现如果取真正的均值的话,结果会被少数几个公司的不常见的Docker使用方式带来的数值严重影响。比如,将容器用作处理队列单元工作会导致某个公司每小时使用上千个容器。

采用分段

本文将企业分类为“采用者”,“尝试者”和“放弃者”。会在月末基于每个企业本月的Docker活动重新将其分类。

采用者:该月运行的容器的均值至少是运行主机数目的50%以上,或者该月至少有和独立主机数量一样的独立容器。

尝试者:该月使用了Docker,但是没有达到“采用者”要求的门限

放弃者:目前仍旧活跃的公司,以前使用过Docker,但是上个月完全没有使用。

注意采用分段门限并非来自于数据的自然分组;数据里包含各种使用数据。我们使用了直觉觉得对于读者有意义的数据。

很有意思的是,本文的发现令人惊讶得适应于不同的采用分段门限。比如,不管采用者门限更低(25%容器平均值,或者和主机数相比,有0.75x的单独容器)或者更高(75%容器均值,或者和主机数相比,有1.5x的单独容器),大部分发现都是不变的:

事实 #1:一年内真正采用量还是上升了5倍

事实#2:采用分段和这些发现没有关系

事实#3:大型公司成为Docker采用者或者尝试者的数量还是比小型公司多2-4倍。图表几乎没有变化。

事实#4:发现几乎没变:采用百分比仅仅变化了±3%

事实#5:第一个月到第六个月之间,采用者的容器数量仍然增长了三倍

事实#6:采用分段和这些发现不相关。

事实#7,8:结果没变。

我们也针对绝对数量门限作了分析,使用分段结果,比如“采用者在该月至少平均运行了20个容器”。但是大部分发现仍然惊人得类似(实际上,几乎一样),这样的策略使得我们更应该在小型企业里,如果其基础架构运行Docker的比例很大时,将其归类为尝试者。

计数

只运行了Datadog Agent的容器被排除在本次调查之外,因此只运行Agent的主机也被排除了。

事实 #1

我们认为能够看到Docker使用量的如此大幅度增长恰恰因为Datadog很擅长于监控Docker。可能新增长是由需要Docker监控的Docker新用户带来的,他们可能会为此专门使用Datadog。但是,当我们看Datadog长期客户时,采用百分比几乎一样。

事实 #2

对于监控的每一种技术,我们将使用量在前1%的企业排除在外。也就是说,如果一小部分公司以非寻常方式使用某种特定技术,并且重度使用时,他们会被从计算中排除。

也要注意,当限制采用为所有使用Docker的公司,或者当排除使用Docker公司的5%,10%或25%时,“运行Docker主机百分比”图的基本走势保持不变。上个季度里,运行Docker的主机百分比有明显变平的趋势。

事实 #3

对于不同的基础架构规模切入点,该发现保持一致。不同切入点如下。本文使用切入点的中间段。

基础架构规模切入点 已经尝试Docker的公司的百分比

1–49, 50–99, 100+ 11%, 22%, 43%

1–99, 100–499, 500+ 11%, 28%, 56%

1–249, 250-749, 750+ 12%, 37%, 58%

相关文章:

  • bootstrap modal填充数据_layui后台管理—table 数据表格详细讲解
  • go 取出json对象的某个值_用Go语言之前,先看看它的利与弊吧
  • 学python的软件开发人员_学python用什么开发软件?
  • mysql中横竖转换_mysql数据库字符编码总结--数据传输编码
  • 模式代码 java中aes_建造者模式和原型模式在开源代码中的应用
  • form表ge实例 html_从零开始学Vue(二~三)—— Vue 实例 / 模板语法(插值、指令)...
  • python 图像宽度_在python中创建具有一定宽度边框的图像
  • print输出 pytorch_60题PyTorch简易入门指南,做技术的弄潮儿??
  • 如何使用conda安装的nvcc_防爆配电箱如何安装、使用?
  • c语言两个for语句并列执行_5.8 C语言for循环
  • mmsi是代表船舶什么_船舶检查过程中, 会遇到哪些问题? 如何解决?
  • 金税盘显示frm000013_征期提醒 金税盘、税控盘常见那些事
  • 如何给按钮添加背景图片_如何在 Ubuntu 18.04 的右键单击菜单中添加“新建文档”按钮...
  • 印象笔记三级目录_印象笔记使用技巧-第一篇(面向新手)
  • 气象ts评分_基于评分最优化的模式降水预报订正算法对比-中国气象科学研究院.pdf...
  • 《剑指offer》分解让复杂问题更简单
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 5、React组件事件详解
  • Android开源项目规范总结
  • C# 免费离线人脸识别 2.0 Demo
  • exif信息对照
  • java第三方包学习之lombok
  • js继承的实现方法
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Otto开发初探——微服务依赖管理新利器
  • SpriteKit 技巧之添加背景图片
  • Terraform入门 - 3. 变更基础设施
  • vue总结
  • 阿里云前端周刊 - 第 26 期
  • 编写高质量JavaScript代码之并发
  • 代理模式
  • 机器学习学习笔记一
  • 手机app有了短信验证码还有没必要有图片验证码?
  • python最赚钱的4个方向,你最心动的是哪个?
  • 关于Android全面屏虚拟导航栏的适配总结
  • # 透过事物看本质的能力怎么培养?
  • ###C语言程序设计-----C语言学习(3)#
  • #QT(TCP网络编程-服务端)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $().each和$.each的区别
  • $(function(){})与(function($){....})(jQuery)的区别
  • (12)Linux 常见的三种进程状态
  • (C++20) consteval立即函数
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (六)软件测试分工
  • (七)理解angular中的module和injector,即依赖注入
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)我也是一只IT小小鸟
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net