容器概述及与虚拟机区别

容器概述及与虚拟机区别,第1张

         容器: 容器是轻量级的 *** 作系统级虚拟化,可以让我们在一个资源隔离的进程中运行应用及其依赖项 。

        运行应用程序所必需的组件都将打包成一个镜像并可以复用。执行镜像时,它运行在一个隔离环境中,并且不会共享宿主机的内存、CPU 以及磁盘,这就保证了容器内进程不能监控容器外的任何进程。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,而是对进程进行封装隔离。

         虚拟机:通常包含整个 *** 作系统及其应用程序,同时也需要运行一个 hypervisor 来控制虚拟机。

        虚拟一套硬件后, 在其上运行一个完整 *** 作系统,在该系统上在运行所需应用进程

         容量大小:

                虚拟机:大小一般是几个G,

                容器:容器是轻量级的而且大小在 M 以内

         性能:

                虚拟机:启动 *** 作系统以及初始化托管应用会花费几分钟的时间

                容器:表现更加出色,并且几乎可以秒启动。

         架构:

        1. 敏捷环境:容器技术最大的优点是创建容器实例比创建虚拟机示例快得多,容器轻量级的脚本可以从性能和大小方面减少开销。

        2. 提高生产力:容器通过移除跨服务依赖和冲突提高了开发者的生产力。每个容器都可以看作是一个不同的微服务,因此可以独立升级,而不用担心同步。

        3. 版本控制:每一个容器的镜像都有版本控制,这样就可以追踪不同版本的容器,监控版本之间的差异等等。

        4. 运行环境可移植:容器封装了所有运行应用程序所必需的相关的细节比如应用依赖以及 *** 作系统。这就使得镜像从一个环境移植到另外一个环境更加灵活。比如,同一个镜像可以在 Windows 或 Linux 或者 开发、测试或 stage 环境中运行。

        5. 标准化: 大多数容器基于开放标准,可以运行在所有主流 Linux 发行版、Microsoft 平台等等。

        6. 安全:容器之间的进程是相互隔离的,其中的基础设施亦是如此。这样其中一个容器的升级或者变化不会影响其他容器。

        1. 复杂性增加:随着容器及应用数量的增加,同时也伴随着复杂性的增加。在生产环境中管理如此之多的容器是一个极具挑战性的任务,可以使用 Kubernetes 和 Mesos 等工具管理具有一定规模数量的容器。

        2. 原生 Linux 支持:大多数容器技术,比如 Docker,基于 Linux 容器(LXC),相比于在原生 Linux 中运行容器,在 Microsoft 环境中运行容器略显笨拙,并且日常使用也会带来复杂性。

        3. 不成熟:容器技术在市场上是相对新的技术,需要时间来适应市场。开发者中的可用资源是有限的,如果某个开发者陷入某个问题,可能需要花些时间才能解决问题。

*** 作系统容器 :如维基百科中所述,“ *** 作系统层虚拟化是一种计算机虚拟化技术,这种技术将 *** 作系统内核虚拟化,可以允许多个独立用户空间的存在,而不是只有一个。这些实例有时会被称为容器、虚拟引擎、虚拟专用服务器或是 jails(FreeBSD jail 或者 chroot jail)。从运行在容器中的程序角度来看,这些实例就如同真正的计算机。”

如上所述,容器共享宿主机的内核,但是提供用户空间隔离。我们可以像在宿主机 *** 作系统上一样,在容器中安装、配置以及运行应用程序。相似的是,分配给容器的资源仅对自己可见。就好比是,任何虚拟机不能获取其他虚拟机的资源。

当需要配置大量具有相同配置的 *** 作系统时, *** 作系统容器就会非常有用。因此,容器有助于创建模板,可以用于创建与另一个 *** 作系统类似风格的容器。

要创建 *** 作系统容器,我们可以利用容器技术,如 LXC,OpenVZ,Linux VServer,BSD Jails 和 Solaris 区域。

应用容器 :如维基百科所述,“应用程序虚拟化是从其所执行的底层 *** 作系统封装计算机程序的软件技术。一个完全虚拟化的应用,尽管仍像原来一样执行,但是并不会进行传统意义上的安装。应用在运行时的行为就像它直接与原始 *** 作系统以及 *** 作系统所管理的所有资源进行交互一样,但可以实现不同程度的隔离或者沙盒化。”

在这种情况下,术语 “虚拟化” 是指被封装的工件(应用程序),这与其在硬件虚拟化中的含义截然不同,其中它涉及被抽象的工件(物理硬件)。

应用程序容器旨在作为单个进程进行打包和运行服务,而在 OS 容器中,可以运行多个服务和进程。

容器技术如 Docker 和 Rocket 就是应用程序容器的示例。

随着互联网的不断发展,我们在软件编程开发以及硬件设备架构等领域都有了新的方法,而关于安全问题的环境优化一直都没有忘记,下面电脑培训就一起来了解一下,关于容器设置的安全问题都有哪些方面。

隔离

早期,很多企业都会使用硬件虚拟化,更换为容器后要注意,容器中所谈的隔离与虚拟机(VM)隔离存在很大不同。当应用程序被攻击时,VM提供的隔离可以有效限制攻击者在应用程序堆栈内横向移动,但容器化应用程序共享主机 *** 作系统资源,无法做到完全隔离。但是,两者被攻击的概率并没有显著不同,只是虚拟机被攻击后的影响范围会相对小些。

解决隔离问题简单的方法就是在虚拟机上运行容器。容器的显著好处是运行时可在任何地方运行,包括正在被逐渐抛弃的虚拟机。一些企业在虚拟机上运行容器化应用程序,以通过虚拟机隔离容器,防止攻击者在应用程序堆栈中横向移动以访问属于其他应用程序的数据。虽然此策略可以限制攻击的严重性,但并不会阻止攻击发生。

运行时

容器的动态特性引入了应用程序部署团队必须理解和管理的新运行时复杂性,类似Kubernetes这样的容器编排系统旨在快速提供容器镜像的复制实例。容器化应用程序由一个或多个容器镜像组成,这些镜像耦合以形成应用程序所需的功能。

应用程序可伸缩性是指在给定点部署特定容器镜像数量的函数。当新功能准备部署,应用程序所有者将创建更新策略,以确保应用程序的现有用户不受更新影响。此更新策略定义了随更新前滚的镜像百分比,以及在发现错误时如何进行回滚。

由于容器化部署的动态特性,对恶意行为或未授权访问的监控变得比传统IT环境更难,容器化应用程序通常具有在主机服务器级别共享的不同资源请求。出于这些原因,IT运营和安全团队应成为其开发团队的合作伙伴,并实施信息共享以了解应用程序的预期行为。

运行时安全解决方案是实时检测和阻止其运行恶意活动的常用选项。通过监视对主机网络调用并尝试登录容器,这些解决方案构建了环境中每个应用程序的行为模型,这些行为模型可以了解所期望的网络 *** 作和文件系统以及 *** 作系统活动和功能。

补丁管理

大多数容器应用程序从基本镜像创建,基本镜像本质上是有限的、轻量级 *** 作系统。应用程序容器镜像将基本映像与特定于应用程序的元素(例如框架、运行时和应用程序本身)组合在一起,每个元素都是镜像中的一层,这些层可能存在软件漏洞,从而带来风险。传统应用程序安全性测试注重应用程序漏洞,而容器化应用程序安全测试必须解决图像层内隐藏的漏洞。

容器云是近两年在云计算技术中新兴的一种产品形式,容器在计算形态上是归属于轻量级的虚拟化技术。和传统虚拟化内核级的Guest OS的封装不同,容器服务是进程级的虚拟化形态封装,启动速度和部署的速度都十分迅速,能够在应用层面根据资源的需求进行快速部署与调度,生命周期变化速度快。

之所以会有容器云的出现,主要还是因为时代的发展趋势所导致。由于在2010年,国外Cloud,Docker等容器技术刚刚创立,这无非给云计算指明了一条明确的道理,此后K8s和Docker等技术就火的一塌糊涂。

而对比于传统虚拟机,容器云有什么特点呢?

一:可移植性

目前容器技术主要体现在应用程序容器化(Docker)和系统容器化上。这两种形式的容器都能让IT团队从底层架构中抽象出程序代码,进一步实现各种部署环境的可移植性。

二:轻量级

容器通常部署在物理服务器及其主机 *** 作系统上,它可以通过单个 *** 作系统安装来运行多个工作环境,因此容器云特别“轻”,仅仅需要几秒钟就可以启动。

三:降低成本

与传统虚拟机相比,CPU,内存和存储效率的提高是容器技术最大优势。在同一基础架构上支持更多容器,那么这些资源的减少就转化成巨大的成本,同时也大大减少了管理开销。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11426891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存