名称的高科技公司,任何高科技公司,而且他们在容器中进行投资。谷歌,当然。IBM是的。微软,检查。但是,仅仅因为容器是非常流行的,并不意味着虚拟机过时。他们不是。
是的,容器可以使您的公司能够将很多更多的应用到不是虚拟机(VM)可以在一台物理服务器。容器技术,如搬运工人在云或数据中心的游戏,这部分击败虚拟机。
虚拟机占用了大量的系统资源。每个虚拟机上运行的操作系统不仅仅是一个完整副本,但所有的操作系统需要运行硬件的虚拟副本。这迅速增加了很多的RAM和CPU周期。与此相反,所有的容器需要足够的操作系统,支持程序和库,以及系统资源来运行特定的程序。
这意味着在实际操作中,你可以把两到三倍之多应用在单个服务器上使用集装箱比你可以用虚拟机。
此外,容器可以创建用于开发,测试和部署一个可移植的,一致的运行环境。这是一个成功的三连胜。
如果这一切都存在于容器与虚拟机,然后我会写的虚拟机的讣告。但是,还有很多更给它比你能有多少应用程序放在一个盒子里。
集装箱问题#1:安全
顶部的问题,这常常会在今天的兴奋忽视有关容器,是安全的。正如丹尼尔·沃尔什,在红帽安全工程师,谁主要从事于泊坞窗和容器所说的那样:容器不包含。以泊坞窗,例如,它使用libcontainers作为容器的技术。Libcontainers访问5个命名空间 - 进程,网络,芒,主机名,和共享存储器 - 与Linux的工作。这是伟大的,只要它去,但有一个很大的容器外重要的Linux内核子系统。
这包括所有的设备,SELinux的,和的cgroup / sys下的所有文件系统。这意味着,如果用户或应用程序容器内的超级用户权限,底层操作系统,在理论上,被破解。
那是一个坏事情。
现在,有很多方法,以确保泊坞窗和其他容器技术。例如,您可以挂载/ sys文件系统为只读,力容器进程只能写入特定的容器文件系统,并成立了网络空间中,因此它只能与指定的专用Intranet等连接。但是,这一切都不是默认内置的。它需要汗水的安全容器。
基本规则是,你需要把集装箱你将任何服务器应用程序的方式相同。也就是说,沃尔什阐述了:
- 尽可能快地放弃特权
- 作为非root用户运行您的服务尽可能
- 在容器内的治疗根,就好像它是容器的根外
另一个安全问题是,很多人都释放集装箱的应用。现在,他们有些是比别人差。如果,例如,你或者你的员工倾斜成,我们可以说,有点懒,并安装涉及到的第一容器,你可能已经带来了一个木马到你的服务器。你需要让你的人明白,他们不能简单地从互联网上下载应用程序,如他们为他们的智能手机做游戏。
你要知道,他们也不应被下载游戏慎之又慎,但是这是一个完全不同的安全问题!
其他容器的担忧
好了,如果我们可以舔的安全问题,容器将统治一切,不是吗?哦,不。你需要考虑其他容器方面。
RackN和OpenStack的基金会董事会成员的首席执行官Rob菲尔德,指出:“包装仍然是棘手:创建一个上锁的箱子可以帮助解决[中]下游部分问题(你知道你有什么),而不是上游的问题(你不知道你靠什么上)“。
对此,我想补充一点,虽然这是一个安全问题,这也是一个质量保证的问题。当然,X容器可以运行Nginx的网络服务器,但它是你想要的版本?是否包括TCP负载均衡更新?可以很容易地部署在一个容器中的应用程序,但如果你安装了错误的一个,你仍然结束了浪费时间。
赫希菲尔德也指出了这一点容器蔓延可能是一个真正的问题。他的意思,你应该知道,“爆炸部署到更多的功能分离的部件是聪明的,但是这意味着我们有更多的部分进行管理。还有的关注和蔓延分离之间的拐点。”
请记住,一个集装箱的整点是运行一个应用程序。你坚持到容器中的更多的功能,越有可能是你应该一直使用虚拟机摆在首位。
诚然,一些容器的技术,如Linux集装箱(LXC),可代替一个VM的使用。例如,你可以使用LXC运行红帽企业Linux(RHEL)在RHEL 7实例6个的具体应用。一般来说,虽然你想使用的容器来运行一个应用程序和虚拟机来运行多个应用程序。
容器和虚拟机之间的决定
那么,你如何去了解虚拟机和容器之间的决定呢?斯科特·S.罗威,VMware的工程建筑师,建议您看看你工作的“范围”。如果您想运行一个单一的应用程序的多个副本换句话说,说MySQL,你使用的容器。如果你想运行多个应用程序的灵活性,您使用的虚拟机。
此外,容器往往你锁定到特定的操作系统版本。这可能是一件好事:你不必有关相关忧虑,一旦你有一个容器正常运行的应用程序。但是,这也限制了你。随着虚拟机,无论你正在使用的虚拟机管理程序 - KVM,Hyper-V的,vSphere中,Xen的,不管是谁 - 你几乎可以运行任何操作系统。你需要运行只能在QNX上运行的应用程序晦涩难懂?这很容易与VM;它不是与当前一代的容器这么简单。
因此,让我拼出来给你。
你需要在一个最小服务器上运行特定应用的最高金额是多少?如果这是你,那么你要使用的容器 - 牢记你将需要有运行容器的系统密切关注,直到容器的安全性已被锁定。
如果您需要在服务器上运行多个应用程序和/或具有多种操作系统,你需要使用虚拟机。如果安全是接近工号一个为您的公司,那么你也将要留在虚拟机现在。
在现实世界中,我希望我们大多数人会在我们的云和数据中心运行容器和虚拟机。在大规模容器的经济性,使任何人都可以忽略太多的经济意义。与此同时,虚拟机仍然有其优点。
作为集装箱技术的成熟,我真的希望发生的,因为和Thorsten冯Eicken,企业云管理公司RightScale的首席技术官,就把它是虚拟机,容器将走到一起,形成一个云可移植性必杀技。我们还没有实现,但我们会实现这个目标。
这个故事,“集装箱对虚拟机:如何分辨这是为您的企业的正确选择”最初发表ITworld 。