大话Docker(三):Docker 和 谷歌(Google) Borg的溯源

率先大家必要通晓,Docker是一个“箩筐”:

  • 存储:Device Mapper、BtrFS、AUFS
  • 名字空间:UTS、IPC、Mount、PID、Network、User
  • 网络:Veth、Bridge、Iptables
  • Cgroups:CPU、CPUset、Memory、Device
  • 安全:Capability、SELinux、Seccomp
  • ……

Docker的降生其实跟谷歌(Google)有很大的本源:那年,Jeffrey Dean仍然一坨老鲜肉。

显然 MapReduce 是现在通用大数据处理的答辩基础,在Jeffrey Dean
提议那些模型后,谷歌(Google)内部率先用这几个模型在里边贯彻了大数额总计的联合模型。Jeffrey Dean
在二零零四年的 OSDI(Operating Systems Design and
Implementation)会议上登出了 MapReduce 随想之后,Hadoop
里丑捧心逐步成为了开源界最为盛行的大数目处理框架。甚至在后头,Hadoop
变成了一个生态系统,和Android 一起抚养了一大批 Java 程序员。

必发bifa88手机客服端,传言国外的Java程序在饭前都祷告:

“噢,感谢伟大的Hadoop,感谢Android赐予大家食品,Amen!”

但和Hadoop不一致的一些是:Hadoop须要搭建专属的集群,而谷歌的MapReduce离线计算是和线上的事务是共享总计资源的。

率先说一下谷歌这么做的要求性:

绝一大半线上的事务的繁忙程度是和工作系列、用户的歇息、地理地方相关的。

例如:在中国11.11是一个大日子,所有电商都拼了命的在搞打折,而在欧弥利坚家与之相呼应是圣诞节;传统的办法为了应对高峰期的流量往往要预备很多硬件资源备用,但那么些资源在平常差不离是不了了之状态。对于创新速度极快的IT设备来说,闲置就是荒废。

谷歌那样做的益处自然是能大大的进步统计资源的利用率。但因而一大半铺面没有如此做,是出于Linux
Kernel对资源(CPU、内存、I/O)隔离设施的缺少。什么人也不乐意见见一个日记挖掘的任务导致线上工作宕机。

但谷歌(Google)毕竟是谷歌,Kernel不援救,那就改Kernel。于是谷歌(Google)的工程师就在Kernel里增添了一种能够做资源隔离的装置:Control
Groups,再合作chroot完结了一套较为完善的建制来有限帮衬进度之间可以不相互影响。

作为那套系统的某后英雄之一的Borg就是谷歌内部的分布式统计调度系统,负责统一调度各个MapReduce的资源分配和线上服务。

立马谷歌之所以选用了那条路,也一定程度上是出于Xen、KVM这个虚拟化技术还不成熟。但即便后来外界的店家普遍的用Xen、KVM来做资源隔离,谷歌(Google)也并从未跟风,正是因为谷歌(Google)的那种格局省去了附加的Hypervisor和Guest
OS的开发,可以落成更高的资源利用率。

谷歌(Google)大致拥有的机器都是混部的,在一台机械上,可能运行着分裂jobs的tasks。根据谷歌在Borg杂文里表露的多寡:

谷歌(Google)的50%的机器运行了9个甚至越多的tasks;90%的机器运行着25个tasks,达到4500个线程。

当然谷歌也并不排外KVM、Xen等虚拟化技术。对于外部运行在GAE(谷歌 App
Engine)和GCE(谷歌 Compute
Engine‎)上的代码,谷歌的做法就是让它们运行在虚拟机(KVM)上,KVM进度被看作
Borg 的 task 运行。也就是说,Borg 是作为下层的,KVM 运行在它之上。

资源隔离机制在 Google内部使用的相比稳定了随后,就被毫无保留地贡献给了开源社区,并把它定名为
Cgroups。

Cgroups 出现后,Docker 所须要的各样原料就齐备了:

二零一零年,多少个雄心勃勃的青年怀揣1000万日币的筹融资在利雅得起家了一家做PaaS平台的店家,起名为
dotCloud。目标是做世界上最好的 PaaS,克服他们:

  • Amazon AWS
  • Google GAE
  • IBM Bluemix
  • RedHat OpenShift
  • Microsoft Azure
  • VMware Cloud Foundry
  • Heroku
  • ……
    面对那个动辄千亿市值的大佬,前路之劳苦更与何人说。

在苦苦支撑了几年之后,公司工作一向不见起色。dotCloud 的开山SolomonHykes 决定把 dotCloud 的具备源代码开源来搏一把。
没悟出,他们的着力引擎Docker 再现了当初 Linux Kernel
开源时的丰彩,获得了大规模劳动端程序员的追捧:“那么些容器管理引擎大大下跌了容器技术的行使门槛,轻量级,可移植,虚拟化,语言无关,写了先后扔上去做成镜像可以随处安排和运转,开发、测试和生育条件干净统一了,仍是可以开展资源管控和虚拟化。”

于是,dotCloud 飞快停下别的手中工作的开发,先河潜心研发 Docker
产品和保证相关社区,过上了甜蜜而欢跃的活着。后边竟然把公司名字都改成
Docker,二〇一四年二月 Docker 发布把阳台即服务的事务 dotCloud
出售给位于德国德国首都的平台即服务提供商 CloudControl,dotCloud
的历史告一段落,Docker 的前奏缓缓拉开。

相关文章