虚拟机与容器 的 区别

VM和容器都可以帮助您充分利用可用的计算机硬件和软件资源。容器是块中的新孩子,但VM已经并且将继续在各种规模的数据中心中非常受欢迎。


如果您正在寻找在云中运行自己的服务的最佳解决方案,您需要了解这些虚拟化技术,它们如何相互比较,以及每种技术的最佳用途。这是我们的快速介绍。


基本定义 - 虚拟机和容器


什么是虚拟机?

虚拟机(VM)是计算机系统的仿真。简而言之,它可以在实际上是一台计算机的硬件上运行看起来很多单独的计算机。
操作系统(OS)及其应用程序从单个主机服务器或主机服务器池共享硬件资源。每个VM都需要自己的底层操作系统,并且硬件是虚拟化的。管理程序或虚拟机监视器是创建和运行VM的软件,固件或硬件。它位于硬件和虚拟机之间,是虚拟化服务器所必需的。


自从负担得起的虚拟化技术和云计算服务出现以来,大大小小的IT部门都将虚拟机(VM)作为降低成本和提高效率的一种方式。


但是,VM可能占用大量系统资源。每个VM不仅运行操作系统的完整副本,还运行操作系统需要运行的所有硬件的虚拟副本。这很快就会增加大量的RAM和CPU周期。与运行单独的实际计算机相比,这仍然是经济的,但对于某些应用程序来说,这可能是过度的,这导致了容器的开发。
虚拟机的好处

  • 应用程序可用的所有OS资源
  • 建立管理工具
  • 建立安全工具
  • 更熟知的安全控制

流行的VM提供商

  • VMware vSphere
  • VirtualBox
  • Xen
  • Hyper-V
  • KVM

什么是容器?

使用容器,而不是像虚拟机(VM)那样虚拟化底层计算机,只是虚拟化操作系统。


容器位于物理服务器及其主机操作系统之上 - 通常是Linux或Windows。每个容器共享主机操作系统内核,通常也包括二进制文件和库。共享组件是只读的。共享操作系统资源(如库)可以显着减少重现操作系统代码的需要,并且意味着服务器可以通过单个操作系统安装来运行多个工作负载。因此容器非常轻 - 它们只有几兆字节,只需几秒钟即可启动。与容器相比,VM需要几分钟才能运行,并且比同等容器大一个数量级。


与VM相比,容器所需的全部功能都足以支持程序和库以及运行特定程序的系统资源。实际上,这意味着您可以将容器上的应用程序的容量设置为使用容器的两到三倍,而不是使用VM。此外,使用容器,您可以为开发,测试和部署创建可移植,一致的操作环境。

容器类型


Linux容器(LXC) - 最初的Linux容器技术是Linux容器,通常称为LXC。LXC是一种Linux操作系统级虚拟化方法,用于在单个主机上运行多个隔离的Linux系统。


Docker - Docker最初是作为一个构建单应用程序LXC容器的项目,向LXC引入了一些变化,使容器更易于使用和灵活使用。它后来变成了自己的容器运行时环境。在较高的层次上,Docker是一个可以高效创建,发布和运行容器的Linux实用程序。


容器的好处

  • 减少IT管理资源
  • 缩小了快照的大小
  • 更快地启动应用程序
  • 减少和简化安全更新
  • 减少传输,迁移,上传工作负载的代码

热门容器供应商

  • Linux容器
    • LXC
    • LXD
    • CGManager
  • docker
  • Windows Server容器

用于VMs与容器的使用
容器和VM都有优点和缺点,最终的决定取决于您的具体需求,但有一些一般的经验法则。

  • 当您需要在服务器上运行多个应用程序或需要管理各种操作系统时,VM是运行需要所有操作系统资源和功能的应用程序的更好选择。
  • 当您最大的优先事项是最大化在最少数量的服务器上运行的应用程序数量时,容器是更好的选择。

差异:虚拟机与容器虚拟机集装箱


对于大多数人来说,理想的设置可能包括两者。

利用当前的虚拟化技术状态,VM的灵活性和容器的最小资源需求协同工作,为环境提供最大的功能。

如果您的组织正在运行同一操作系统的大量实例,那么您应该考虑容器是否合适。它们可能会为您节省大量的时间和金钱。谢谢Thanks♪(・ω・)ノ !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经典 Linux 协议栈——网络子系统

目录: 1.Linux网络子系统的分层 2.TCP/IP分层模型 3.Linux 网络协议栈 4.Linux 网卡收包时的中断处理问题 5.Linux 网络启动的准备工作 6.Linux网络包:中断到网络层接收 7.总结 Linux网络子系统的分层 Linux网络子系统实现需要: l …

Java和JavaScript之间的区别

1.简介 我们将在本文中比较Java语言和JavaScript语言。 JavaScript由Netscape开发。 它最初是用于客户端的脚本语言,后来又用作客户端和服务器脚本的语言。 Java由James Gosling由Sun Microsystems开发。 这些天来,JavaScript在服务器中以node.js的形式使…

《汇编语言》王爽实验DOS 环境 Win10 配置

下载这两个软件。 软件链接百度网盘 请输入提取码 提取码: y1j4 1. 将debug.exe放入一个文件夹中,用英文名,不要用中文。 我这里放在E盘下的Debug文件夹。 2 然后安装DOSBox软件。 安装好后在其文件目录下找到DOSBox 0.74-3 Options.bat 打开这个文件&…

硒4 Alpha –期望什么?

硒4 Alpha-期望什么? 早在2018年8月,整个测试自动化社区就受到了一个重大新闻的打击:Selenium的创始成员Simon Stewart在班加罗尔Selenium会议上正式确认了Selenium 4的发布日期和一些重大更新。 世界最受欢迎的Web测试自动化框架的4.0版本计…

hibernate jpa_JPA / Hibernate实体状态转换的初学者指南

hibernate jpa介绍 Hibernate将开发人员的思维方式从SQL语句转移到实体状态转换。 一旦由Hibernate主动管理实体,所有更改将自动传播到数据库。 操作域模型实体(及其关联)比编写和维护SQL语句容易得多。 如果没有ORM工具,则添加新…

STL容器----map

一 基本概念 1. map/multimap map/multimap属于关联式容器,底层结构是用二叉树实现。 其中所有元素都是pair, pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)&#xff0…

win10任务栏怎样居中win10任务栏居中设定教程

win11系统内置任务栏居中的设置项,但是win10系统没有,倘若win10顾客也想让自己的任务栏居中的话,应当怎样设置呢?你先撤销任务栏锁住,随后新建菜单栏。之后选定一个空白文件夹,之后任务栏就会发生两条竖杠&…

java与java ee_RxJava + Java8 + Java EE 7 + Arquillian =幸福

java与java ee微服务是一种体系结构样式,其中每个服务都实现为一个独立的系统。 他们可以使用自己的持久性系统(尽管不是强制性的),部署,语言等。 由于系统由一个以上的服务组成,因此每个服务将与其他服务…

【PPT】折线线条怎么画?

大家晚上好~ 今天跟大家分享3种绘制折线线条的方法。在模仿PPT的时候发现没有折线形状,这可怎么好呢? 今天带来了3种快速制作折线线条的方式,让我们一起围观学习吧~ 方法1 形状布尔运算出折线线条 在PPT默认的形状里没有折线,那…

Citavi阅读PDF文件中目录位置

一般阅读pdf文件,如果文件内内嵌目录数据,可以根据目录,跳转到PDF文件的对应章节。 citavi也不例外 citavi调出目录章节位置如下图所示: 1. 点击左下方的搜索框 2. 点击目录标志 即可调出目录窗口

Ubuntu下命令行解析

Linux命令通常由以下三部分组成:Command [-option] [argument] 其中,命令为程序的名称。选项和参数可以省略 选项中one dash(-)与two dashes(--)区别 使用命令时常看到有时候为选项为-,有时候…

使用JMeter进行性能测试

在开发复杂的高可用性软件项目时,性能至关重要。 在当今这样的现代时代尤其如此,除了闪电般的快速访问实时数据之外,其他任何事情都受到惩罚。 当谈论有时需要的大量数据时,这并不总是一件容易的事。 在本文中,我们将…

jboss eap_带有自定义模块的JBoss EAP上的骆驼

jboss eapApache Camel —最好的开源集成库 Apache Camel是一个很棒的开放源代码集成库,可以用作ESB的主干或在独立的应用程序中进行系统的路由,转换或中介(请参阅:集成多个系统)。 Camel非常通用,不会迫使…

ubuntu下安装openMPI

首先访问openmpi官网:Openmpi 然后选择Download,进入资源下载页面。选择最新版本的openmpi 如何获得下载链接呢?将鼠标放在openmpi-4.0.5.tar.gz 上右击,然后选择复制链接地址。打开远程命令窗口,进入root或者用户模式。 (1)、下…

前6个最常用的Redis库

Redis目前 是世界上最受欢迎的键值商店, 它通过提供高速和低延迟以及针对应用程序开发人员的灵活功能集,赢得了广泛的采用率 。 Redis是一个内存数据结构存储,用作根据BSD许可分发的数据库,缓存和消息代理 。 许多领先的技术品牌…

拓扑排序算法总结

知识概览 求图的拓扑序是图的宽搜的一个很经典的应用,拓扑序列是针对有向图来说的。 拓扑序列的定义是: 如果说一个点的序列满足对于图中的每条有向边(x, y),x都出现在y的前面,那就称这个序列是这个图的拓扑序列。 备注&#xff…

input发送a.jax_JAX-RS 2.0的新功能– @BeanParam批注

input发送a.jax至少可以说JAX-RS很棒,也是我的最爱之一! 为什么? 功能丰富 直观(因此学习曲线不那么陡峭) 易于使用和开发 具有出色的RI – Jersey , RestEasy等 有足够的JAX-RS粉丝可以添加此内容&am…

Netty Java快速指南

使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 Netty是一个无阻塞的输入/输出(NIO)框架,它使开发低级网络服务器和客户端变得相对…

编辑器中代码中多行注释

1 Sublime 快捷键为ctl shift / ,并在第二行打一个*后,以后的换行会自动在开始打印一个* 2 VScode 快捷键为Alt Shift A,并在第二行与第三行分别开始打一个*后,以后的换行会自动在开始打印一个* 3 两者最通用的方式 使用快捷键后,在…

到无限(溪流)和超越!

Java允许您处理集合或流中的数据。 将流视为将一个集合转换为另一个集合的技术非常容易。 这可能会导致一些相当随意的代码,在该代码中,流数据被重复收集到某种类型的集合中,作为整体集合传递,然后再进行更多处理。 对于6个元素&…