For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
如今越来越多的企业都开始使用不同的方法和渠道来进行软件测试,本文我们就一起来了解一下,容器化在测试领域的发展状态。
虚拟化容器技术(virtualized container)的历史,其实可以一直追溯上世纪 70 年代末。感谢 Wikipedia 等活历史,我们现在至少还能从文字上了解到在很多读者出生前,一群来自贝尔实验室( Bell Laboratories )的“黑客”研究员们正试图用“容器”的概念来解决什么样问题。
时间回到 1979 年,贝尔实验室正在为 Unix V7 (Version 7 Unix)操作系统的发布进行后的开发和测试工作。在那个时候,Unix 操作系统还是贝尔实验室的内部项目,而运行 Unix 的机器则是长得像音响一样的、名叫 PDP 系列的巨型盒子。在那个“软件危机(The Software Crisis)”横行的末期,开发和维护 Unix 这样一套操作系统项目,即使对贝尔实验室来说也绝非易事。更何况,那里的程序员们还得一边开发 Unix ,一边开发 C 语言本身呢。
而在 Unix V7 的开发过程中,系统级别软件构建(Build)和测试(Test)的效率其实是其中一个为棘手的难题。这里的原因也容易理解:当一个系统软件编译和安装完成后,整个测试环境其实就被“污染”了。如果要进行下一次构建、安装和测试,就必须重新搭建和配置整改测试环境。在有云计算能力的今天,我们或许可以通过虚拟机等方法来完整的复现一个集群。但在那个一块 64K 的内存条要卖 419 美元的年代,“快速销毁和重建基础设施”的想法还是有点“科幻”了。
所以,贝尔实验室的聪明脑袋们开始构思一种在现有操作系统环境下“隔离”出一个可供软件进行构建和测试的环境。更确切的说,就是我能否简单的执行一些指令,就改变一个程序的“视图”,让它把当前目录当做自己的根目录呢?这样,我每次只要在当前目录里放置一个完整操作系统文件系统部分,该软件运行所需的所有依赖就完备了。
更为重要的是,有了这个能力,开发者实际上就间接拥有了应用基础设施“快速销毁和重现”的能力,而不需要在环境搭好之后进入到环境里去进行应用所需的依赖安装和配置。这当然是因为,现在我的整个软件运行的依赖,是以一个操作系统文件目录的形式事先准备好的,而开发者只需要构建和测试应用的时候,切换应用“眼中”的根目录到这个文件目录即可。
于是,一个叫做 chroot(Change Root)的系统调用就此诞生了。
顾名思义,chroot 的作用是“重定向进程及其子进程的根目录到一个文件系统上的新位置”,使得该进程再也看不到也没法接触到这个位置上层的“世界”。所以这个被隔离出来的新环境就有一个非常形象的名字,叫做 Chroot Jail。
值得一提的是,这款孕育了 chroot 的 Unix V7 操作系统,成为了贝尔实验室 Unix 内部发行版的绝唱。在这一年末尾, Unix 操作系统正式被 AT&T 公司商业化,并被允许授权给外部使用,自此开启了一代操作系统的传奇之旅。
而 Chroot 的诞生,也一次为世人打开了“进程隔离”的大门。
伴随着这种机被更广泛的用户接触到, chroot 也逐渐成为了开发测试环境配置和应用依赖管理的一个重要工具。而 “Jail” 这个用来描述进程被隔离环境的概念,也开始激发出这个技术领域更多的灵感。在 2000 年,同属 Unix 家族的 FreeBSD 操作系统发布了”jail“命令,宣布了 FreeBSD Jails 隔离环境的正式发布。相比于 Chroot Jail,FreeBSD Jails 把”隔离“这个概念扩展到了进程的完整视图,隔离出了独立进程环境和用户体系,并为 Jails 环境分配了独立的 IP 地址。所以确切的说,尽管 chroot 开创了进程环境隔离的思想,但 FreeBSD Jails,其实才真正实现了进程的沙箱化。而这里的关键在于,这种沙箱的实现,依靠的是操作系统级别的隔离与限制能力而非硬件虚拟化技术。
以上就是今天本文为大家分享的文章,希望对大家有所帮助。