10: 虚拟化和容器化 - 过去,现在和未来

Posted TIFY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10: 虚拟化和容器化 - 过去,现在和未来相关的知识,希望对你有一定的参考价值。

欢迎转载,请注明出处!


正文: 

       虚拟化和容器技术已经在很多领域广为使用,那么,为什么还要谈论它呢?因为,仍然存在一些普遍存在的问题 - 容器和虚拟机的未来是什么?为了让初学者跟上,让我们从基础知识开始 - 什么是容器?

        我们现在将以相反的顺序找到这三个问题的答案。

        要了解容器,我们需要了解虚拟化。当使用虚拟机管理程序软件在真实计算机上模拟计算机时,它会抽象硬件,它被称为服务器虚拟化。因此,在单个强大的物理机器上,可能有多个虚拟机在运行,从而利用最大的计算能力。

       这意味着,对于每个VM,必须有单独的空间用于处理单元,内核,网络接口,IP方案,文件系统以及其他。那另外一个问题,为什么需要依赖每个VM的Guest OS?

     想象一下,你可以在单个内核上的受限用户空间(允许进程访问的有限内存)中运行应用程序及其关联数据,而不是在单个物理硬件上运行多个虚拟机。你想象的是一个容器。

什么是容器化?

     容器化是用于部署和运行分布式应用程序的操作系统级虚拟化,无需为每个应用程序启动单独的虚拟机

     回答我们的第二个问题 - 它存在了多长时间?将我们带回了三十多年,1982年的某个时候,当时一个名为Chroot的奇怪的操作系统级虚拟化被尝试在那里可以创建系统软件的虚拟化副本。除了一小群虚拟化爱好者之外,没有人能理解它的含义。23年后,Solaris发布了第一个基于Chroot的容器化应用程序。他们甚至称他们的容器为Chroots onSteroids。快进到2008年,Linux Containers(LXC)使用Linux内核中的cgroups功能成为该技术的更精炼版本。

      我们将密切关注时间表中的这一点,该时间表列出了导致我们目前容器状态的一系列事件。LXC做得怎么样才最终导致Docker建立在它之上?容器取得了成功,因为Docker取得了成功,因为LXC取得了成功。

    因此,为了进一步发展,我们需要了解LXC。让我们回到2008年!

    在LXC中,使用了名称空间和cgroup。还记得每个VM如何认为它们是唯一在硬件上运行的VM?同样,命名空间为一组进程提供了在系统中运行单一进程的错觉。它们基本上限制了每个进程在各种内核资源上的视图。目前有6个已完成和实现的命名空间。它们适用于:UID和GID,进程间通信,网络,进程ID,文件系统和域/主机名。

     可以从称为cgroups(控制组)的统一接口控制上述资源。利用这两个功能,可以为每个进程隔离内核资源。除此之外,Union FileSystem是使Containers轻量级的核心功能之一。

     它基本上是一个写时复制文件系统。这意味着,在有多个呼叫者访问同一资源的过程中,不会复制资源并将其发送给每个呼叫者。资源保持原样,同时指向调用者以读取资源。当需要进行修改时,只有这样,才会获取资源的副本并对其进行更改,保持原始状态不变。

     只有所做的更改才会叠加在基础映像(最小的可行Linux目录和实用程序)上形成单个文件系统的delta-change映像。这有助于更好地隔离层并避免产生重复。

     即使这些功能长期存在,直到最近才发生了很多事情。为什么?需要任何技术才能获得蒸汽。

      Docker为容器做了这个。它是执行整个容器化的软件。它使构建一个简单,运行速度更快的过程,并聚集了一个庞大的社区,使许多公共可用的图像被许多人使用。去年,考虑到120亿张图片(已下载的码头工作词),“很多”过于简单化了。

       因此,用户创建一个Docker文件,用于构建Docker Image以及应用程序及其依赖项。这是使用Docker Client传递给Docker守护进程的。用户可以上传图像或下载公开的图像。这将应用程序及其依赖项打包到一个不可见的容器中,从而消除了启动和维护VM时可能产生的开销。

      这引出了开头提出的问题,即容器和虚拟机的未来是什么?

      容器是单个应用程序的即时启动,模块化,可移植性和多次复制使用的首选。当术语被剥离时,意味着应用程序使用相同的操作系统,从而克服了启动时的延迟。当我说模块化时,我的意思是容器化提供的微服务。可以根据应用程序将应用程序拆分为模块,并且可以单独立即创建每个操作。通过从注册表下载,可以将基本映像分发到不同的计算机,使其可移植。

      VM在哪里获胜?基本上在其他所有情况下。只要应用程序在同一操作系统上运行,容器就可以工作。如果用户需要使用在不同操作系统上运行的不同应用程序,该怎么办?虚拟机提供可靠的解决方案。它们提供更好的安全性 容器细分市场蔓延可能导致的问题 - 管理众多微细分 - 可能是一种负担。当您创建容器时,它是一个沙箱,这意味着加班其他依赖项是一个值得关注的问题。虚拟机中不存在这些痛点。这并不意味着虚拟机击败容器,也不意味着容器会消灭虚拟机。他们甚至没有互相攻击。

       最有效和最常用的策略是拥有一台具有多个虚拟机的物理机,每个虚拟机都有多个容器。有一个原因是在物理机上运行虚拟机上的容器,而不是先将面部跳入容器。用户应该优化他们的计算资源,但同时应该有选择他们想要使用资源的方式的自由。

      容器解决了VM带来的问题,并有助于优化计算环境。


TIFY致力于IT行业产品、销售的学习、讨论、分享

感谢您的关注,您的每一次分享,都是最大的鼓励

更多学习资料,请访问TIFY官方论坛:www.tify.club

以上是关于10: 虚拟化和容器化 - 过去,现在和未来的主要内容,如果未能解决你的问题,请参考以下文章

Linux 容器化技术详解(虚拟化容器化Docker)

陈齐彦:容器技术是未来 IT 技术最核心的系统级创新

2019 DevOps 必备面试题——容器化和虚拟化

容器云平台在传统企业落地的一些思考和探索

云视角下的视频编码:从虚拟化走向容器化

linux12 - docker容器化 --> 介绍安装镜像的使用