您的位置: 网界网 > 新闻 > 正文

三大容器之战

2015年08月05日 13:26:21 | 作者:范范编译 | 来源:网界网

摘要:容器像风暴一样席卷了整个网络世界,它们为传统的虚拟机提供了轻量化且更为灵活的替代方案。容器与虚拟机之间最大的不同之处在于容器可以共享公共文件,虚拟机进程为不连续的颗粒,即便存储和网络都被虚拟化和共享后情况仍然如...

标签
容器
Odin
openVZ
Docker

Docker、Rocket或LinuXContainers/LXC都可以用于创建容器。此外,通过Odin下载,还可创建一个供openVZ/Virtuozzo容器使用的仓库。在OpenVZ的部署与Docker和Rkt相似。虚拟化环境安装起来很容易,可获得与配置相似的VMware 5.5中的硬件相同的性能。我们没有使用过多的测量标准,只使用了SciMark浏览器进行了大概的性能测试,其下载性能与后台使用场景都与Firefox 35相似。

在这种方式中,OpenVZ非常像一个虚拟层,但是整个处理流程与VMware相比更为轻量化,它们可能更像Windows Hyper-V。不过,它们并没有VMware ESXi 5.X的大量功能。

测试OpenVZ和Virtuozzo

我们首先测试的是OpenVZ/OVZ。安装存在着两个分支,一个是针对的是类似RedHat的版本,另一个针对的是Debian版本。每一个都是pre-sysctrl的分支和post-sysctrl的推断。由于安装基础二进制文件都非常相似,所有分支的功能实际上都相同。其说明文档适合熟悉Linux的安装者,但是并不完全适合新手。

尽管OpenVZ可以作为虚拟机运行,但是它们希望的是裸机。在使用裸机时,性能还是比较快的。我们强烈建议不要使用OpenVZ或Virtuozzo作为虚拟机,因为这样会降低性能。

Docker 1.6

Docker作为一个根进程在许多Linux发行版、MacOS版本和微软平台上运行。我们测试了4个版本的Linux主机和一个MacOS主机。这即是好事也是坏事。由于简单并且能够编排相似和不同的容器,因此Docker受到了广泛欢迎。目前大多数的Linux内核都能够运行Docker容器。Docker可以很方便的托管操作系统实例。

Docker的部分价值在于有可从Docker仓库中选择许多实例变种。在Docker.com中注册的仓库和容器中充满了知名应用开发厂商的“官方”镜像,部分镜像被托管在Docker的网站上,部分被链接至应用开发商的网站上,还有一部分与GitHub连接到了一起。此外,有许多开发平台和预置应用工具可供使用。

典型的Docker实例可能是Ubuntu 14.04服务器实例,其在可用主机资源方面相对较少。或许容器正在运行一个Linux/Apache/MySQL/PHP/Perl (LAMP)实例,通用实例非常多并且各种类型都有。让事情运行起来就像使用docker运行命令那样简单。这一命令实例化了容器/虚拟机实例,其将使用存储子目录,这不同于Linux chroot在安全方面的工作,而是与OpenVZ/Virtuozzo相同。

Docker容器镜像使用了联合文件系统/ unionfs,其可成为容器专用的文件夹基础设施。与OpenVZ/Virtuozzo一样,Docker可通过unionfs让层致力于每个由Docker启动的容器进程。这允许相似的镜像共享基础文件,只需要一次升级,保留镜像快照或镜像升级所需的空间即可。例如在升级openssh时,因为它们依赖于升级后的镜像,因此可迅速为20个容器进行升级。

Docker作为容器平台

在删除所存储的重复性共同文件方面,Docker并不像OpenVZ/Virtuozzo那样倾向于保留共同的容器空间。理论上,OpenVZ/Virtuozzo可将容器紧密地打包在一起。这表明,在使用与OpenVZ/Virtuozzo测试时一样的硬件平台,我们可更为轻松地放置大量的Docker容器实例。

与Virtuozzo相比,Docker没有控制层仪表。Docker需要更为精心地处理控制脚本和密钥,相比之下Virtuozzo更为便利。目前许多第三方厂商开始通过应用解决方案来解决这一问题。不过,我们此次并没有测试这些应用解决方案。

管理庞大的容器主机并不困难,但这需要娴熟的技能。Docker Swarm是一个API,允许一组Docker容器作为一个对象,通过一个单点控制就可以管理一组容器。同时这也使得实例可以快速扩展。

创建可作为对象管理的一组容器平台需要极强的责任心。这表明,要有像Apache Mesos这样能够将庞大数据[注]集控制作为集群化容器的应用。从机构安全配置方面看,这必须要极其小心,因为暴露的资源都是有可能被劫持的资源。

Rocket/rkt 0.5.4

Rocket是一个占用空间小且高度稳定的应用平台,它的引入是为了与CoreOS进行协调。Rocket缺乏一些密钥组件(+微信关注网络世界),与Docker或Virtuozzo相比,它们需要一些精通架构的专业人员。我们非常高兴地看到它们通过源镜像出处和负载控制将重点聚焦在了安全性上。

在Linux内核的基础上,CoreOS的演进速度比Docker要慢,它们是一个针对集群的操作系统,而不是针对控制层的操作系统。CoreOS是rkt的多家赞助商之一,不过它们并没有为投入生产做好准备。通常我们并不会对没有很大需求的产品进行对比。因为测试版本往往都无法满足现实生产的需求。

这三个容器都使用了相同成熟度的Linux组件,我们考虑rkt更多的是出于它们的理念,而非实践情况。Rkt并不简单,不过我们认为它的风险较小,因为它们有着更为严格的安全标准。

12 34

参考资料

1.大数据:(Big Data),研究机构Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 ...详情>>

[责任编辑:孙可 sun_ke@cnw.com.cn]

我也说几句