中国领先的IT技术网站
|
|

1.2.2 容器技术的发展

《Docker从入门到实战》本书从Docker的相关概念与基础知识讲起,结合实际应用,通过不同开发环境的实战例子,详细介绍了Docker的基础知识与进阶实战的相关内容,以引领读者快速入门并提高。本节为大家介绍容器技术的发展。

作者:黄靖钧来源:机械工业出版社|2017-10-17 18:05

CTO训练营 | 12月3-5日,深圳,是时候成为优秀的技术管理者了


1.2.2  容器技术的发展

2000年,由R&D Associates公司的Derrick T. Woolworth为FreeBSD引入的FreeBSD Jails成为了最早的容器技术之一。与chroot不同的是,它可以为文件系统、用户、网络等的隔离增加进程沙盒功能。因此,它可以为每个jail指定IP地址,可以对软件的安装和配置进行定制等。

紧接着出现了Linux VServer,这是另外一种jail机制,用于对计算机系统上的资源(如文件系统、CPU处理时间、网络地址和内存等)进行安全划分。每个所划分的分区叫做一个安全上下文(Security Context),在其中的虚拟系统叫做虚拟私有服务器(Virtual Private Server,VPS)。

在2004和2005年期间分别出现了Solaris Containers和OpenVZ技术,在可控性和便捷性上更胜一筹,如图1.3所示。

到了2006年,Google公司公开了Process Containers技术,用于对一组进程进行限制、记账、隔离资源(CPU、内存、磁盘I/O、网络等)。后来为了避免和Linux内核上下文中的“容器”一词混淆,而改名为Control Groups(简写为Groups)。2007年被合并到了Linux2.6.24内核中。

在前面Cgroups等技术出现以后,容器技术有了更快的发展。如图1.4给出了容器技术的发展史。

2008年出现了LXC(LinuX Containers),它是第一个最完善的Linux容器管理器的实现方案,是通过Cgroups和Linux名字空间namespace实现的。LXC存在于liblxc库中,提供了各种编程语言的API实现。与其他容器技术不同的是, LXC可以工作在普通的Linux内核上,而不需要增加补丁。

LXC的出现为后面一系列工具的出现奠定了基础。2011年CloudFoundry发布了Warden。不像LXC,Warden并不紧密耦合到Linux上,而是可以工作在任何可以提供隔离环境的操作系统上。它以后台守护进程的方式运行,为容器管理提供了API。

在2013年,Google公司发布了Lmctfy,它是一个Google容器技术的开源版本,提供Linux应用容器。Google启动这个项目,旨在提供性能可保证的、高资源利用率的、资源共享的、可超售的、接近零消耗的容器。Lmctfy首次发布于2013年10月。到了2015年,Google公司决定贡献其核心的Lmctfy概念,并抽象成libcontainer。现在为Kubernetes所用的cAdvisor工具就是从Lmctfy项目的成果开始的。

libcontainer项目最初由Docker发起,现在已经被移交给了开放容器基金会(Open Container Foundation)。

同年,dotCloud发布了Docker(Logo是一条鲸鱼驮着一堆集装箱,如图1.5所示)——至今最流行和使用最广泛的容器管理系统。在LXC的基础上,Docker进一步优化了容器的使用体验,使得容器更容易操作和管理。

Docker提供了从构建、运行、管理、监控等一系列工具,引入了一整个管理容器的生态系统,包括高效分层的容器镜像模型、全局和本地的容器注册库、清晰的REST API、命令行等。这是Docker与其他容器平台最大的不同。在如图1.6中可以看到Docker跨越了多个层面,整合了一系列零散的工具从而达到一系列便捷的操作。这是当时Docker从众多容器技术中脱颖而出的一个重要原因。

围绕Docker的生态系统更有数不胜数的工具,极大地方便了开发者使用容器技术。关于Docker的更多特性,将在第2章介绍。

Docker开始阶段使用的也是LXC,之后采用自己开发的libcontainer替代了LXC。

之后出于各种原因,CoreOS启动项目Rocket,非常类似于Docker,但是修复了一些Docker中发现的问题。与Docker相比,Rocket是在一个更加开放的标准App Container规范上实现的。现今不少容器管理工具都支持Rocket与Docker。

2015年微软公司也在Windows Server上为其基于Windows的应用添加了容器支持,称之为Windows Containers,与Windows Server 2016一同发布。通过该实现,Docker可以原生地在Windows上运行Docker容器,而不需要启动一个虚拟机来运行Docker(Windows上早期运行Docker需要使用Linux虚拟机)。同年,Mac OS也原生支持运行Docker容器。如图1.7所示为官网给出的下载按钮。至此Docker完成了三大平台的适配。

容器虚拟化技术经过几十年不断的发展与完善,相继加入了pivot_root等很多技术。市场上也出现了一些商业化的容器技术公司。在这些公司与全球开发者的共同努力下,容器技术得到不断推进和发展。最后核心容器技术进入了Linux的内核主线,再后来诸多大厂加入开发的libcontainer,使得如今人人皆可得心应手地操作容器。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

ASP网络编程从入门到精通

本书是为那些对Web开发感兴趣的读者而编写的。ASP(Active Server Pages)是微软公司在Web领域的又一次突破,它打破了以往只能由专业人员来...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Phthon,最神奇好玩的编程语言