深圳Linux培训
达内深圳龙岗中心

150-1322-7143

热门课程

Linux 容器技术的历史与未来

  • 时间:2016-04-19
  • 发布:深圳Linux培训班
  • 来源:达内新闻

Linux容器是一个在单一Linux主机上提供多个隔离的Linux环境的操作系统级虚拟技术。linux容器不需要专用的操作系统,因此要比虚拟器启动快得多。

 

一、容器历史

 

1979 — chroot

 

   容器的概念始于1979年的UNIX  chroot,它是一个UNIX操作系统上的系统调用,用于将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到该目录。这个功能的想法是为每个进程提供独立的磁盘空间。其后在1982年,它被加入到了BSD系统中。

 

2000 — FreeBSD Jails

 

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

 

2001 — Linux VServer

 

    Linux VServer是另外一种jail机制,它用于对计算机系统上的资源(如文件系统、CPU处理时间、网络地址和内存等)进行安全地划分。每个所划分的分区叫做一个安全上下文(security context),在其中的虚拟系统叫做虚拟私有服务器(virtual private server,VPS)。

 

2004 — Solaris Containers

 

    Solaris Containers支持在x86和SPARC系统,首次出现在2004年2月发布的Solaris 10的build 51 beta上,其后完整发布在2005年的Solaris 10上。Solaris Container是由系统资源控制和通过zones提供的边界分离(boundary separation)所组合而成的。zones是一个单一操作系统实例中的完全隔离的虚拟服务器。

 

2005 — OpenVZ

 

    OpenVZ类似于Solaris Containers,它通过对Linux内核进行补丁来提供虚拟化、隔离、资源管理和状态检查(checkpointing)。每个OpenVZ容器都有一套隔离的文件系统、用户及用户组、进程树、网络、设备和IPC对象。

 

2006 — Process Containers

 

    Process Containers是由Google在2006年实现的,用于对一组进程进行限制、记账、隔离资源使用(CPU、内存、磁盘I/O、网络等)。后来为了避免和Linux内核上下文中的“容器”一词混淆而改名为Control Groups。它被合并到了2.6.24内核中。这表明Google很早就参与了容器技术的开发,以及它们是如何回馈到社区的。

 

2007 — Control Groups

 

   如上面所述,Control Groups(即  cgroups)是由Google实现的,并于2007年加到了Linux内核中。

 

2008 — LXC

 

    LXC的意思是LinuX Containers,它是第一个最完善的Linux容器管理器的实现方案,是通过cgroups和Linux名字空间(namespace)实现的。LXC存在于liblxc库中,提供了各种编程语言的API实现,包括Python3、Python2、Lua、Go、Ruby和Haskell。与其它容器技术不同的是,LXC可以工作在普通的Linux内核上,而不需要增加补丁。现在LXC project是由Canonical公司赞助并托管的。

 

2011 — Warden

 

    Warden是由CloudFoundry在2011年开发的,开始阶段是使用的LXC,之后替换为他们自己的实现方案。不像LXC,Warden并不紧密耦合到Linux上,而是可以工作在任何可以提供隔离环境的操作系统上。它以后台守护进程的方式运行,为容器管理提供了API。请参考Warden文档和这个博客文章了解更多。

 

2013 — LMCTFY

 

    lmctfy的意思是“让我为你包含(Let Me Contain That For You)”。这是一个Google容器技术的开源版本,提供Linux应用容器。Google启动这个项目旨在提供性能可保证的、高资源利用率的、资源共享的、可超售的、接近零消耗的容器(参考自:lmctfy演讲稿)。现在为Kubernetes所用的cAdvisor工具就是从lmctfy项目的成果开始的。lmctfy首次发布于2013年10月,在2015年Google决定贡献核心的lmctfy概念,并抽象成libcontainer,因此,lmctfy现在已经没有活跃的开发了。

 

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

 

2013 — Docker

 

    Docker是到现在为止最流行和使用广泛的容器管理系统。它最初是一个叫做dotCloud的PaaS服务公司的内部项目,后来该公司改名为Docker。类似Warden,Docker开始阶段使用的也是LXC,之后采用自己开发的libcontainer替代了它。不像其它的容器平台,Docker引入了一整个管理容器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰的REST API、命令行等等。稍后的阶段,Docker推动实现了一个叫做Docker Swarm的容器集群管理方案。

 

2014 — Rocket

 

    Rocket是由CoreOS所启动的项目,非常类似于Docker,但是修复了一些Docker中发现的问题。CoreOS说他们的目的是提供一个比Docker更严格的安全性和产品需求。更重要的是,它是在一个更加开放的标准App Container规范上实现的。在Rocket之外,CoreOS也开发了其它几个可以用于Docker和Kubernetes的容器相关的产品,如:CoreOS操作系统、etcd和flannel。

 

2016 — Windows Containers

 

   微软2015年也在Windows Server上为基于Windows的应用添加了容器支持,它称之为Windows Containers。它与Windows Server 2016一同发布。通过该实现,Docker可以原生地在Windows上运行Docker容器,而不需要启动一个虚拟机来运行Docker(Windows上早期运行Docker需要使用Linux虚拟机)。

 

二、容器未来

 

   截止到今天(2016年1月),在行业内有一个显著趋势,部署软件应用从虚拟机逐渐移到了容器。其主要的原因是容器相比于虚拟机而言更加灵活和低消耗。Google已经使用容器技术好多年了,它在Borg和Omega容器集群管理平台上可以成规模地运行Google应用。更重要的是,Google为容器领域贡献了cgroups的实现和参与了libcontainer项目。Google也在过去这些年借助容器在性能、资源利用和整体效率方面取得了巨大收益。最近,一直没有操作系统级的虚拟化技术的微软,也在Window Server上迅速采取动作实现了对容器的原生支持。

 

    Docker、Rocket以及其它的容器平台并不能以一个单一主机运行在产品环境中,原因是这样面临着单点故障。当一组容器运行在一个单一宿主机时,如果宿主机失效,所有运行在该宿主机上的容器也会失效。要避免这个问题,应该使用容器宿主机集群。Google借助其在Borg中取得的经验,开发了一个叫做  Kubernetes的开源容器集群管理系统。Docker也启动了一个叫做  Docker Swarm的解决方案。目前这些解决方案还都处于相当早期的阶段,也许需要几个月或来年才实现完整的功能集合,才能变得稳定,从而广泛应用于行业内的产品环境中。

 

   微服务(Microservices)是另一个突破性技术,在软件架构上可以将容器用于部署。微服务并不是一个新东西,只是一个相比标准的Web服务超快的轻量级Web服务。这是通过将功能单元(也许是一个单一服务或API方法)打包到一个服务中,并内嵌其到一个轻量级Web服务器软件中实现的。

 

   培训专家的介绍,可以预测接下来几年,容器也许会替代虚拟机,某些情况下也许会全部取代。通过达内嵌入式linux

上一篇:快速搞定Linux容器
下一篇:达内受邀参加第三届产教融合发展战略国际论坛,并做主题演讲

Linux系统独具的6大优势

深圳龙岗如何选择linux培训班?从零基础到月薪过万

在IT工程师眼里的Linux竟然是这样的

深圳Linux培训机构教你做最受欢迎的人

选择城市和中心
贵州省

广西省

海南省