论文部分内容阅读
一年前,如果你问大多数系统管理员能不能用容器,很有可能得到的是系统管理员的一个茫然的眼神。然而,此一时彼一时,当下容器技术,特别是Docker风头正劲,在其版本还只是测试版时,在财富500强中就已经有一大批公司开始在其服务器、数据中心以及云应用中采用Docker。Docker技术副总裁 James Turnbull曾表示,在Docker 1.0正式发布之前,就已经有3家主要银行将其投入到生产应用中。
容器为何如此受欢迎
其实,一旦你理解了Docker技术做了些什么,就很容易理解它为何如此受欢迎。Parallels公司服务器虚拟化部门CTO James Bottomley从技术的角度进行了解释。至今为止,数据中心已经使用了很多年的虚拟化管理程序(Hypervisor),如Hyper-V,KVM和Xen等,它们之所以能充分利用硬件资源来支持云计算,其技术实质是仿真出一个虚拟的硬件,这意味着它们对系统要求较高,也就是比较占用资源。而容器是基于共享的操作系统,与Hypervisor相比,它们更小和更有效率,容器并不虚拟硬件,而是运行在单个Linux 的实例上。Bottomley表示,这意味着我们可以避免虚机(VM)所需要的绝大多数资源,而只有一个包含应用程序的小巧而整洁的应用包而已。
如果是一个充分优化的采用容器的系统,同样的硬件条件下其支持的实例数将是Xen或者KVM虚拟机数量的4~6倍。即使不进行任何额外的工作,同样的硬件支持的服务器应用实例数量也能超过虚拟机的2倍以上。
Bottomley说,至于Docker,其本身并不算是容器技术,而是一种应用打包技术和一套应用打包的流程编排系统,以保证容器技术很好地工作。如果容器底层的操作系统平台不支持Docker,Docker将无法工作。
这样的解释还是太技术,如果从商业应用来谈可能更容易理解。就是说,如果采用Docker,在一个很小的服务器上就可以运行很多应用服务器实例。这意味着企业可以节约大量的电源和硬件购置成本,以及每年可能高达数百万美元的数据中心维护费,仅此一点就会对企业产生了非常大的诱惑。
容器的技术演进之路
所谓容器就是在一台机器上提供各种资源的隔离,从而支持多个应用同时运行,而从应用的角度看,自己是独占这台机器的。应用本身还可以支持创建子容器。很多人以为Docker是IT领域的一项伟大的新生事物。这句话说对了一半,Docker是伟大的但并不是一种全新的技术,特别是其底层的容器技术更是早就为业内所熟知。
容器技术可以追溯到1979年的Unix V7.0版中的“chroot” 命令——Unix中一个切换根目录的命令。自那时以来,它以各种格式存在于各种操作系统中。其中最知名的是FreeBSD中的Jail、AIX工作负载分区和Solaris中的容器。
尽管很少有人知道它,但是毫无疑问应用得最多的容器技术是谷歌的lmctfy(Let Me Contain That For You,即让我容纳你的程序)。有不少于 20 亿个容器采用lmctfy。在这些谷歌的容器中内运行着我们用过所有的谷歌应用程序,从Document、Gmail到Google搜索。
容器技术的最新进展发生在 Linux 系统中。Parallels 在其Virtuozzo和其开源的服务器虚拟化软件OpenVZ上都取得了一些商业上的成功。而LXC已成为大多数容器的基础,包括Docker。
Docker何以成为明星?
谈到容器技术,Docker无疑是最受关注的一个,其占据了媒体绝大多数关于容器的报道版面,也成为业内人士关注的焦点。亚马逊、思科、谷歌和VMware都宣布支持Docker,甚至微软也正在准备进入支持Docker的阵营中。Docker为什么会获得这种压倒性的行业支持?显然,每一项技术的流行总是会有技术和经济上的原因。当然,同样也有公司有足够的理由不接受容器。
首先也是最重要的原因是安全。libvirt 虚拟化应用程序编程接口 (API) 开发人员Daniel Berrange 曾在2011年写道:“LXC还是不安全的。如果我想真正的安全,我将使用KVM。”虽然他谈论的只是LXC这一种容器技术,但其实每个人都知道所有容器都面临这些问题。
在2013年,LXC容器终于支持非特权的用户来创建LXC容器,原来只有根用户才有权创建。这就使得容器的安全性有了很大提高。Docker 就公开承认,即使他们一直在不断工作以改善其安全性,但仍然还有很多工作要做,但Docker 和任何其他基于LXC的容器技术相比,在安全性上已有了更多的改观。
容器一个重要的里程碑是在2014年3月,当Docker与Canonical、谷歌、Red Hat和Parallels一起创建了一个关键的标准化的开源项目 libcontainer。该项目让容器能与一种一致的、可预测的方式支持Linux 的命名空间、控制组、AppArmor安全配置文件、网络接口和防火墙规则。由于无需Linux用户空间的组件(如LXC、libvirt或
容器为何如此受欢迎
其实,一旦你理解了Docker技术做了些什么,就很容易理解它为何如此受欢迎。Parallels公司服务器虚拟化部门CTO James Bottomley从技术的角度进行了解释。至今为止,数据中心已经使用了很多年的虚拟化管理程序(Hypervisor),如Hyper-V,KVM和Xen等,它们之所以能充分利用硬件资源来支持云计算,其技术实质是仿真出一个虚拟的硬件,这意味着它们对系统要求较高,也就是比较占用资源。而容器是基于共享的操作系统,与Hypervisor相比,它们更小和更有效率,容器并不虚拟硬件,而是运行在单个Linux 的实例上。Bottomley表示,这意味着我们可以避免虚机(VM)所需要的绝大多数资源,而只有一个包含应用程序的小巧而整洁的应用包而已。
如果是一个充分优化的采用容器的系统,同样的硬件条件下其支持的实例数将是Xen或者KVM虚拟机数量的4~6倍。即使不进行任何额外的工作,同样的硬件支持的服务器应用实例数量也能超过虚拟机的2倍以上。
Bottomley说,至于Docker,其本身并不算是容器技术,而是一种应用打包技术和一套应用打包的流程编排系统,以保证容器技术很好地工作。如果容器底层的操作系统平台不支持Docker,Docker将无法工作。
这样的解释还是太技术,如果从商业应用来谈可能更容易理解。就是说,如果采用Docker,在一个很小的服务器上就可以运行很多应用服务器实例。这意味着企业可以节约大量的电源和硬件购置成本,以及每年可能高达数百万美元的数据中心维护费,仅此一点就会对企业产生了非常大的诱惑。
容器的技术演进之路
所谓容器就是在一台机器上提供各种资源的隔离,从而支持多个应用同时运行,而从应用的角度看,自己是独占这台机器的。应用本身还可以支持创建子容器。很多人以为Docker是IT领域的一项伟大的新生事物。这句话说对了一半,Docker是伟大的但并不是一种全新的技术,特别是其底层的容器技术更是早就为业内所熟知。
容器技术可以追溯到1979年的Unix V7.0版中的“chroot” 命令——Unix中一个切换根目录的命令。自那时以来,它以各种格式存在于各种操作系统中。其中最知名的是FreeBSD中的Jail、AIX工作负载分区和Solaris中的容器。
尽管很少有人知道它,但是毫无疑问应用得最多的容器技术是谷歌的lmctfy(Let Me Contain That For You,即让我容纳你的程序)。有不少于 20 亿个容器采用lmctfy。在这些谷歌的容器中内运行着我们用过所有的谷歌应用程序,从Document、Gmail到Google搜索。
容器技术的最新进展发生在 Linux 系统中。Parallels 在其Virtuozzo和其开源的服务器虚拟化软件OpenVZ上都取得了一些商业上的成功。而LXC已成为大多数容器的基础,包括Docker。
Docker何以成为明星?
谈到容器技术,Docker无疑是最受关注的一个,其占据了媒体绝大多数关于容器的报道版面,也成为业内人士关注的焦点。亚马逊、思科、谷歌和VMware都宣布支持Docker,甚至微软也正在准备进入支持Docker的阵营中。Docker为什么会获得这种压倒性的行业支持?显然,每一项技术的流行总是会有技术和经济上的原因。当然,同样也有公司有足够的理由不接受容器。
首先也是最重要的原因是安全。libvirt 虚拟化应用程序编程接口 (API) 开发人员Daniel Berrange 曾在2011年写道:“LXC还是不安全的。如果我想真正的安全,我将使用KVM。”虽然他谈论的只是LXC这一种容器技术,但其实每个人都知道所有容器都面临这些问题。
在2013年,LXC容器终于支持非特权的用户来创建LXC容器,原来只有根用户才有权创建。这就使得容器的安全性有了很大提高。Docker 就公开承认,即使他们一直在不断工作以改善其安全性,但仍然还有很多工作要做,但Docker 和任何其他基于LXC的容器技术相比,在安全性上已有了更多的改观。
容器一个重要的里程碑是在2014年3月,当Docker与Canonical、谷歌、Red Hat和Parallels一起创建了一个关键的标准化的开源项目 libcontainer。该项目让容器能与一种一致的、可预测的方式支持Linux 的命名空间、控制组、AppArmor安全配置文件、网络接口和防火墙规则。由于无需Linux用户空间的组件(如LXC、libvirt或