姓名为技术公司,任何技术公司,他们投资于容器。当然,谷歌。IBM., 是的。微软, 查看。但是,只要因为容器非常受欢迎,并不意味着虚拟机已经过时了。他们不是。
是的,容器可以使您的公司将更多的应用程序包装到单个物理服务器中,而不是虚拟机(VM)。集装箱技术,如Docker.,在云或数据中心游戏的这一部分击败VM。
VMS占用了很多系统资源。每个VM不仅运行操作系统的完整副本,而且还运行了操作系统需要运行的所有硬件的虚拟副本。这很快增加了大量的RAM和CPU周期。相比之下,容器需要的所有内容都足够的操作系统,支持程序和库以及系统资源来运行特定程序。
这意味着在实践中是什么,你可以将两到三倍放在一个与容器上的单个服务器上的应用程序,而不是VM。
此外,对于容器,您可以为开发,测试和部署创建便携式,一致的操作环境。这是一个获胜的三叶草。
如果这就是容器与虚拟机的所有内容,那么我就会为VM写一个ob告。但是,它比你可以放在一个盒子里的应用程序更多。
集装箱问题#1:安全性
最重要的问题,通常被忽视在今天对容器的兴奋之中是安全性的。作为Daniel Walsh,Red Hat的安全工程师主要在Docker和Containers上运作它:容器不包含。例如,采取Docker,它使用它libcontainers.作为集装箱技术。libcontainers访问五个名称空间 - 进程,网络,挂载,主机名和共享内存 - 使用Linux使用。就它而言,这很大,但是容器外部有很多重要的Linux内核子系统。
这些包括所有设备,selinux,cgroups和/ sys下的所有文件系统。这意味着如果用户或应用程序在容器中具有超级用户权限,则在理论上,底层操作系统可以破解。
那是一个坏的事物。
现在,有很多方法可以保护Docker和其他集装箱技术。例如,您可以将A / SYS文件系统挂载为只读,强制容器进程只能写入特定于容器的文件系统,并设置网络命名空间,以便仅使用指定的私有内部网和依此类推。但是,默认情况下,这些都没有内置。它需要汗水到保护容器。
基本规则是您需要以与任何服务器应用程序相同的方式处理容器。就像沃尔什咒语:
- 尽快删除特权
- 尽可能以非root服务运行您的服务
- 在容器内处理根源,好像它是容器外的根
另一个安全问题是许多人正在发布集装箱中的应用程序。现在,其中一些比其他人更糟糕。例如,如果您或您的员工倾向于,我们会说,一点点懒,并安装掌握的第一个容器,您可能会把特洛伊木马带入您的服务器。您需要让您的人民了解他们不能简单地从互联网下载应用程序,就像他们为他们的智能手机做游戏一样。
请注意,他们也不应该下载Willy-Nilly的游戏,但这是一种不同的安全问题!
其他容器担忧
好的,所以如果我们可以舔安全问题,容器会统治所有,对吗?好吧,没有。您需要考虑其他容器方面。
Rob Hirschfeld,Rackn和OpenStack基金会会员的首席执行官,观察到:“包装仍然很棘手:创建一个锁定的盒子有助于解决[the]下游问题的一部分(你知道你有什么),但不是上游问题(你不知道你依赖于什么)。“
为此,我会补充一点,虽然这是一个安全问题,但它也是一种质量保证问题。当然,x容器可以运行nginx web服务器,但它是您想要的版本吗?它包括TCP负载平衡更新吗?在容器中部署应用程序很容易,但如果您正在安装错误的应用程序,您仍然最终浪费时间。
Hirschfeld还指出,集装箱蔓延可能是一个真正的问题。通过这意味着您应该意识到“将部署到更功能的离散部分是聪明的,但这意味着我们有更多的零件来管理。关注和蔓延的分离之间存在拐点。”
请记住,容器的整点是运行单个应用程序。您才能粘在容器中的功能越多,您应该在第一次使用虚拟机的可能性越有可能。
TRUE,一些容器技术(如Linux容器(LXC))可以代替VM。例如,您可以使用LXC在RHEL 7实例上运行Red Hat Enterprise Linux(RHEL)6特定应用程序。一般来说,虽然您要使用容器运行单个应用程序和VM来运行多个应用程序。
决定容器和虚拟机之间
那么无论如何,您如何决定VM和容器之间?VMware工程建筑师斯科特S. Lowe建议您看看你工作的“范围”。换句话说,如果您想要运行单个应用程序的多个副本,请说MySQL,使用容器。如果您想要运行多个应用程序的灵活性,请使用虚拟机。
此外,容器倾向于将您锁定到特定的操作系统版本中。这可能是一件好事:一旦让应用程序在容器中正确运行,您就不必担心依赖项。但它也会限制你。使用VMS,无论您使用的虚拟机管理程序 - KVM,Hyper-V,vSphere,Xen,无论如何 - 您都可以很多运行任何操作系统。您是否需要运行一个唯一的应用程序,只能在qnx上运行?VM很容易;目前的容器并不是那么简单。
所以让我拼出来。
您是否需要在最少的服务器上运行最大的特定应用程序?如果那是你,那么你想用容器 - 请记住,您将需要在运行容器的系统上密切关注,直到容器安全被锁定。
如果您需要在服务器上运行多个应用程序和/或您需要使用多种操作系统,您需要使用VM。如果安全性接近您公司的作业编号,那么您现在也将要留在VMS。
在现实世界中,我希望我们大多数人将在我们的云和数据中心上运行容器和虚拟机。在规模中的容器经济对任何人都忽略了太多财务意义。与此同时,VM仍然有优点。
随着集装箱技术的成熟,我真正期望发生的是,作为Enterional云管理公司的CTEN的CTEN,因为VM和集装箱将融合在一起云便携性Nirvana.。我们还没有那里,但我们会到达那里。
史蒂文J.Vaughan-Nichols一直在写作技术和技术业务,因为CP / M-80是尖端PC操作系统,300bps是一个快速的互联网连接,Wordstar是最先进的文字处理器,我们喜欢它!