像Docker和Rocket这样的容器越来越受欢迎。如果你不知道容器是什么以及如何在环境中使用它们。那么请继续阅读吧。
NOW现在行动!
这怎么发生的?
据我所知,容器源于谷歌(和其他公司)对大规模水平扩展的需求。现在,这不是一个独特的问题。当时,有几种不同的解决方案可以帮助部署和协调扩展所需的应用程序和基础架构 - 即虚拟机(VM)及其编排服务(如VMware的vCenter)。然而,在像谷歌这样的公司推动的大规模规模上,服务器虚拟化有一些严重的缺点:进入容器。
什么是容器?
从本质上讲,容器和虚拟机之间的主要区别在于每个单元所涉及的开销量。
虚拟机实际上是整个服务器的组件,而不是物理硬件。简化后,它是操作系统和运行应用程序所需的所有其他组件。这是分离应用程序的好方法,但它也需要大量冗余(和开销)。
容器是应用程序及其在操作系统上运行的所有依赖项,而不是操作系统本身。操作系统内核在系统上的所有容器之间共享。这种方法通过在每个虚拟机上运行一个单独的操作系统实例来减少虚拟机引入的CPU、内存和磁盘开销。在单一的系统规模下,这不算什么考虑因素。但是,当您谈到以百万计的规模时,它可以带来令人难以置信的节省,而不会大幅降低功能。
当您谈到关键的区别时,它实际上等于“在管理程序运行的级别”,或者如果这太技术化了,那么这两种技术从其底层组件提供抽象的级别(请看下面的图像)。对于虚拟机,它从操作系统中抽象出硬件。对于容器,它从与之交互的应用程序中抽象出操作系统。这就是好处所在:容器允许应用程序进行隔离,而不需要每个应用程序都有操作系统的额外副本。操作系统占用了大量的计算机资源,因此在隔离的同时共享开销的能力是非常有效的。谷歌报告称,他们每周大约要增加20亿个容器。在这种规模下,你可以看到效率的必要性!
如何在VM和容器之间做出决定?
目前,两者经常一起使用。如果您正在AWS EC2实例上运行容器,那么您同时也在VM中运行容器。但是,需要注意的重要区别是:
安全
安全性=虚拟机。
无论何时整合资源,无论是使用虚拟机还是容器,安全都应该是最重要的。这是因为控制资源访问的过程提供了单一的、高价值的攻击目标。如果您可以破坏该过程,则可以控制使用它的所有资源。可怕,对吧?
效率
降低成本=容器。
正如我之前所说,你可以使用两者。然而,容器有很大的潜力来减少您所依赖的物理服务器的数量或您在任何云环境中的花费。尤其是现在有了像Kubernetes和Swarm这样的协调解决方案来帮助您管理环境。
在决定放入容器的内容之前,您应该考虑的另一件事是下一点......
性能
性能=取决于。
如果您的服务(应用程序)具有非常高的工作负载或需要大量资源,则您必须非常谨慎地决定将哪些服务组合在一起。虚拟机和容器都是如此。原因是支持服务的物理机器上的资源数量有限。机器越接近100%,对服务的响应就越慢,应用程序的运行速度也就越慢。
长按订阅更多精彩▼