欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

容器简史:从1979至今的日子

来源:本站整理 作者:佚名 时间:2020-03-12 TAG: 我要投稿

随着云计算的发展,容器的使用越来越广泛,尤其是近两年,越来越多企业机构都开始采用容器作为新的IT基础设施。回顾一下历史,其实容器在上世纪的70年代末就已经出现了雏形。Jails,Zones,VPS,VM和容器都是为了隔离和资源控制,但每种技术是通过不同的方式实现它,每种方式都有其局限性和优势。
1979年:Unix V7
在那个计算资源匮乏年代,想要通过快速销毁和重建基础设施来解决测试环境污染问题几乎不可能。为了隔离出来可供软件进行构建和测试的环境,chroot(change root)系统调用程序横空出现。
在1979年Unix V7的开发过程中,正式引入了chroot系统调用,为每个进程提供一个独立的磁盘空间,将一个进程及其子进程的根目录改变到文件系统中的新位置,让这些进程只能访问到该目录。这个被隔离出来的新环境被叫做 Chroot Jail。这标志着进程隔离的开始,隔离每个进程的文件访问权限。如下图所示,贝尔实验室正在为 Unix V7操作系统的发布进行最后的开发和测试工作。

图1:Unix操作系统测试
2000年:FreeBSD Jails
在2000年,FreeBSD操作系统正式发布FreeBSD jails隔离环境,真正意义上实现了进程的沙箱化。这为文件系统、用户、网络等隔离增加了进程沙盒功能,实现了客户服务之间的隔离和管理。
这种沙箱的实现,依靠的是操作系统级别的隔离与限制能力而非硬件虚拟化技术。FreeBSD Jails允许管理员将FreeBSD计算机系统划分为几个独立的、较小的系统,称为“ jails”,并能够为每个系统和配置分配IP地址,可以对软件的安装和配置进行定制。
2001年:LinuxVServer
与FreeBSD Jails一样,Linux VServer也是一种类似上述Jails机制,可以对计算机系统上的资源(文件系统,网络地址,内存)进行分区。每个所划分的分区叫做一个安全上下文(security context),在其中的虚拟系统叫做虚拟私有服务器(virtualprivate server,VPS)。该操作系统虚拟化于2001年推出,通过修补Linux内核来实现,测试性补丁目前仍然可用,但最后一个稳定的修补程序于2006年发布。
2004年:Solaris容器
2004年2月,Oracle发布了Oracle Solaris Containers,这是一个用于X86和SPARC处理器的Linux-Vserver版本。Solaris Container 是由系统资源控制和通过 zones 提供的边界分离(boundary separation)所组合而成的。zones 是一个单一操作系统实例中的完全隔离的虚拟服务器。
2005年:Open VZ(Open Virtuzzo)
这是Linux操作系统级虚拟化技术,它通过Linux内核补丁形式进行虚拟化、隔离、资源管理和状态检查。操作系统级虚拟化有一些限制,因为容器共享相同的体系结构和内核版本,当客户需要不同于主机的内核版本的情况下这种缺点就会显现出来。该代码未作为正式Linux内核的一部分发布。每个 OpenVZ 容器都有一套隔离的文件系统、用户及用户组、进程树、网络、设备和 IPC 对象。
2006年:Process Containers
Process Containers(由Google在2006年推出)旨在用于限制,计算和隔离一系列流程的资源使用(CPU、内存、磁盘I / O、网络)。一年后,为了避免和 Linux 内核上下文中的“容器”一词混淆而改名为 ControlGroups简称Cgroups,并最终合并到Linux内核2.6.24中。这也可以说明 Google 很早就参与了容器技术的开发。
2008年:LXC
Linux容器(LXC)是第一个、最完整的Linux容器管理器的实现方案。2008年时候,通过将 Cgroups 的资源管理能力和 Linux Namespace 的视图隔离能力组合在一起,LXC完整的容器技术出现在了 Linux 内核当中,并且可以在单个Linux内核上运行而无需任何补丁。
LXC 存在于 liblxc 库中,提供了各种编程语言的 API 实现,包括 Python3、Python2、Lua、Go、Ruby 和 Haskell。现在 LXC project 是由 Canonical 公司赞助并托管的。
2011年:Warden
Warden是由CloudFoundry在2011年成立,这是一个管理隔离,短暂存在和被资源控制的环境的API。在其第一个版本中,Warden使用了LXC,之后替换为他们自己的实现方案。不像 LXC,Warden 并不紧密耦合到 Linux 上,可以为任何系统提供隔离运行环境。Warden以后台保护程序运行,而且能够提供用于容器管理的API。它开发了一个CS(客户端-服务端)模型来管理跨多个主机的容器集群,并且Warden提供用于管理cgroup,名称空间和进程生命周期的相关服务。
2013年:LMCTFY
LMCTFY 是2013年Google容器技术的开源版本开始,提供Linux应用程序容器,旨在提供性能可保证的、高资源利用率的、资源共享的、可超售的、接近零消耗的容器。
在2015年,Google开始向由Docker发起的Libcontainer贡献LMCTFY核心概念之后,LMCTFY在2015年主动停止部署,Libcontainer现在是Open Container Foundation(开放容器基金会)的一部分。
2013年:Docker
随着2013年Docker的出现,容器开始迅速普及。它最初是一个叫做 dotCloud 的 PaaS 服务公司的内部项目,后来该公司改名为 Docker。Docker的增长并非偶然,它引入了一整套管理容器的生态系统,包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰的 REST API、命令行等。   跟Warden一样,Docker开始阶段使用的也是LXC,后来用自己的库libcontainer进行替换。Docker 推动实现了一个叫做 Docker Swarm 的容器集群管理方案。
2014年:Rocket
Rocket 是由 CoreOS 所启动的项目,非常类似于 Docker,但是修复了一些 Docker 中发现的问题。CoreOS 初衷是旨在提供一个比 Docker 更严格的安全性和产品需求。更重要的是,它是在一个更加开放的标准 AppContainer 规范上实现的。在 Rocket 之外,CoreOS也开发了其它几个可以用于 Docker 和 Kubernetes的容器相关的产品,如:CoreOS 操作系统

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载