`
zhaomengsen
  • 浏览: 207765 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

Linux 容器技术史话:从 chroot 到未来

阅读更多

Linux 容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术。不像虚拟机(VM),容器并不需要运行专用的访客(guest)操作系统。容器们共享宿主机的(host)操作系统内核,并使用访客操作系统的系统库来提供所需的功能。由于不需要专用的操作系统,因此容器要比虚拟器启动快得多。
Virtual Machines Vs Containers
Virtual Machines Vs Containers
(图片来自: Docker Inc.)

转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0228/178.html?1456925793
容器借助 Linux 内核的 Namespaces、Apparmor、SELinux 情景模式(profile)、chroot 和 CGroup 等功能来提供类似于虚拟机的隔离环境。Linux 的安全模块可以确保正确地控制容器对宿主机和内核的访问,从而避免各种入侵活动。此外,在宿主机上可以运行不同的 Linux 发行版,只要它们运行在同样的 CPU 架构下。
简单来说,容器提供的是一种基于各种 Linux 发行版创建容器镜像的方法、一套管理容器生命周期的 API、与该 API 交互的客户端工具、保存快照的功能、在宿主机之间迁移容器实例的能力,等等。

容器历史

以下是容器简史,内容来自维基百科及其它来源:
1979 — chroot

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

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 内核中。#p#分页标题#e#
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#p#分页标题#e#

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 服务器软件中实现的。#p#分页标题#e#
通过对上面的介绍,我们可以预测接下来几年,容器也许会替代虚拟机,某些情况下也许会全部取代。去年我为一些企业在 POC 层面上实现了基于容器的解决方案。也有人想要在产品环境中尝试它们,这一天也许在容器集群管理系统进一步成熟后很快到来。
分享到:
评论

相关推荐

    计算机史话和Web开发技术史话

    从第一台巨大的电子计算机到如今小巧便携的智能设备,从最初的静态网页到如今交互丰富的Web应用,每一个阶段的技术革新都为我们的生活带来了深远影响。对于初学者来说,了解这些历史不仅能激发对技术的热情,也有助...

    ROS史话36篇.pdf

    ### ROS史话36篇 —— 关键知识点解析 #### 1. **ROS的历史背景与发展** - **起源**:2006年,一群充满好奇心的研究者在加利福尼亚州成立了柳树车库(Willow Garage),这是一个专注于机器人技术的研发机构。 - ...

    电脑史话(新版)(pdf文档)

    这本书以丰富的细节和生动的故事,揭示了计算机技术从最初的萌芽到如今的繁荣背后所蕴含的创新、挑战与突破。 在描述中提到的“不寻常的发展历程”,实际上是指计算机技术自诞生以来所经历的多个阶段。从早期的机械...

    计算机史话

    计算机史话,ISBN:9787111257943,作者:黄俊民 等编著

    计算机史话之计算机未来发展趋势(共28张PPT)精选.pptx

    计算机史话之计算机未来发展趋势是探讨计算机技术发展方向的重要话题。随着计算机技术的发展,PC将成为我们工作上的工具,生活中的控制中心是必然的事情。计算机的未来充满了变数。性能的大幅度提高是不可置疑的,而...

    Web开发技术史话.pdf

    总的来说,Web开发技术经历了从静态到动态、从简单到复杂、从单一到多元的过程。随着技术的不断创新,Web开发者面临着更多的可能性和挑战,但始终不变的是为用户提供高效、便捷的信息服务这一核心目标。

    电脑史话(2008版).

    《电脑史话(2008版)》是一部详尽记录了计算机发展历程的著作,它为我们揭示了这个科技领域从诞生到2008年的辉煌历程。这本书是那些对计算机历史充满兴趣的读者的宝贵资源,它不仅仅是一段科技发展的时间线,更是一段...

    电脑史话(计算机的发展)

    ### 电脑史话:计算机的发展历程 #### 一、早期机械式计算器——帕斯卡的加法机 在计算机发展的历史长河中,最初的尝试往往简单而粗糙,却蕴含着改变世界的伟大愿景。17世纪,法国人布莱兹·帕斯卡(Blaise Pascal...

    Web开发技术史话[收集].pdf

    Web开发技术的发展历程可以追溯到20世纪80年代末,由Tim Berners-Lee发明的Web技术。他的Enquire项目是Web的前身,而1990年11月,第一个Web服务器nxoc01.cern.ch的运行标志着Web时代的开启。1991年,欧洲粒子物理...

    西餐饮食文化:西方餐具史话.doc

    汤匙的历史更为悠久,从旧石器时代的亚洲开始,到古埃及、希腊和罗马的贵族,汤匙材质多样,不仅是实用工具,也是艺术表现。在15世纪的意大利,洗礼汤匙成为流行礼物,象征守护天使,体现了汤匙在社会习俗中的重要性...

    炼油工艺技术发展史话.doc

    炼油工艺技术的发展历程可以追溯到...总体来说,炼油工艺技术的发展是一个从简单蒸馏到复杂化学转化的过程,伴随着科技的进步和社会的需求变化,炼油技术不断创新,推动了能源产业的繁荣,并对全球经济产生了深远影响。

    诺贝尔化学奖百年史话第一章绪论.ppt

    【诺贝尔化学奖百年史话】是对自1901年以来诺贝尔化学奖的全面回顾,旨在揭示这一奖项背后科学家们的卓越贡献及其对世界科技发展的影响。诺贝尔化学奖是为纪念瑞典化学家、发明家阿尔弗雷德·诺贝尔而设立,旨在表彰...

    《简明中国科学技术史》读书笔记.pdf

    《简明中国科学技术史》是一本探讨中国科学技术发展历程的书籍,旨在揭示中国科学技术的历史进程,分析古代至近代科技兴衰的社会历史原因,并关注中外科技交流的互动。书中的内容主要围绕以下几个方面展开: 1. ...

    电脑史话(新版)

    这是一本关于电脑发展史的好书啊!

    秦朝史话视听小说开发.rar

    《秦朝史话》视听小说开发是一个涉及到多媒体内容创作、编程技术、音频处理以及互动叙事设计的项目。在这个项目中,开发者将通过源代码和教程,引领我们深入了解如何利用现代技术重现古代历史故事,使读者在听觉和...

    电脑史话电脑发展史文档

    电脑发展史,各种计算机技术电脑发展史 电脑发展史,各种计算机技术电脑发展史

Global site tag (gtag.js) - Google Analytics