Docker vs. VM(死神vs火影玩入口)
nanshan 2024-11-15 22:48 23 浏览 0 评论
背景
各种虚拟机技术开启了云计算时代;而Docker,作为下一代虚拟化技术,正在改变我们开发、测试、部署应用的方式。那虚拟机与Docker究竟有何不同呢?
Docker
介绍
Docker是一种轻量级的操作系统虚拟化解决方案,它想达到一次构建到处运行,类似于Java虚拟机的效果,它最初诞生于2013年,是基于go语言的实现并遵从 Apache2.0 协议开源,最初是由dotCloud公司的内部一个业余项目,后来项目开源加入了Linux基金会,然后现在代码在github上进行维护。Docker的基础是基于Linux容器技术,在Linux容器技术的基础上,Docker进行了进一步的封装,让大家不去关心容器的管理,使得操作更加便捷。用户操作Docker容器,就像操作一个快速轻量级的虚拟机那样简单。
特点
首先明确技术要点,Docker技术就是基于容器的虚拟化技术,相对于其它虚拟化技术,它的特点是:
- 轻量级:单机可以轻松支持上百Container,让各种个位数虚拟化的方案相形见绌。
- 快速就绪:一秒以内启动,即使是以资源快速就绪著称的青云IAAS也无法相比。
- 弱安全:Docker能够对多种OS资源进行隔离,但是它本质上依托于内核,因此所有的内核漏洞都是Docker的致命伤。
场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
逻辑视图
基础环境(In
frastructure & Host OS):所有主流的Linux发行版都可以运行Docker。对于MacOS和Windows,也有一些办法"运行"Docker。
Docker(Docker 守护进程):Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。
各种依赖(Bins/lIBS): 对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。
应用(App):应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。
VM(虚拟机)
介绍
虚拟化技术最先出现20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来.虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作,虚拟化说白了就是原本是一个完整的资源,切分或者说虚拟成多份,让这多份资源都使用起来,物尽其用,减小了浪费,提升了利用率,节省成本。全球排名前五的虚拟化软件公司为:VMware、微软、思杰、红帽(Red Hat),甲骨文(Oracle)。
特点
- 封装:虚拟机都保存在文件中,且可通过移动跟复制这些文件的方式来移动跟复制该虚拟机。
- 相对于硬件独立:无需修改即可在任何服务器上运行虚拟机。
- 隔离:在同一服务器上的虚拟机之间互相隔离,改变了之前单台物理机服务器只能挂以个应用的格局。 即在一个物理服务器上可以同时运行N个操作系统,每个系统中部署以个应用,这些应用可同时链接N个小时开启,且系统间互相隔离,互不影响,合理利用了服务器的硬件资源。
- 分区:在单个物理服务器上同时运行多个虚拟机,将一个物理服务器的硬件资源分别分给多个虚拟机。
虚拟化分类
服务器虚拟化技术
基于主机的服务器虚拟化技术(Host-based server virtualization ,虚拟机)允许具有不同操作系统的多个虚拟机(Virtual Machine)在同一物理主机系统上并发运行,又可以细分为如下三类。
- 完全虚拟化(Full virtualization):完全虚拟化提供了完整的硬件模拟,这有一个优势,即完全的虚拟机可移植性,例如,允许在Dell服务器上运行的虚拟机重新定位到HP服务器,而不会出现任何问题。代价是性能会降低,内存读写大概损失2%,网络和硬盘I/O大概损失8%~20%。
- 半虚拟化(Paravirtualizaton):虚拟机中的Guest操作系统需要重新编译,让其知道处于虚拟化环境中,以便可以和 Host 操作系统或者VMM/Hypervisor协调工作。可以通过两种方式来实现半虚拟化:1)重新编译操作系统内核,这需要操作系统品牌商提供和半虚拟化环境兼容的OSbuild;2)安装半虚拟化的内核模式驱动,通过安装半虚拟化的内核模式存储和网络驱动,可以有效降低硬盘和网络读写延迟(从完全虚拟化的8%~20%降到2%)。
- 硬件辅助虚拟化( Hardware-Assisted Virtualization ):英特尔和AMD都积极致力于使其处理器实现虚拟化,意识到虚拟环境的存在,CPU可以直接和VMM/Hypervisor交互,让其运行在Ring-1,这样一来,Guest操作系统可以运行在Ring0,从而不需要借助于VMM/Hypervisor的Trap中断来执行特权指令,极大降低了特权指令的执行延迟。在提高处理性能的同时,通过分配不同的硬件地址空间给虚拟机从而在硬件层面实现有效隔离。
操作系统虚拟化技术
操作系统虚拟化以应用程序为中心,允许多个虚拟环境(VE)共享一个通用操作系统,每个环境的运行开销比完全虚拟化的主机少得多。单就内存而言,虚拟机的需求就相当大。操作系统虚拟化的另一个好处是它不需要虚拟环境中的任何驱动程序或完整硬件仿真。这允许虚拟环境中的I/O以接近本机的性能运行。由于VE作为应用程序外壳运行,它们提供了与VM相同的可移植性,不需要依赖于主机系统硬件(但是必须都在Linux操作系统上)。安全性和隔离性不如虚拟机(操作系统提供的应用级别隔离),单就这一点,容器技术无法替代虚拟机技术。
逻辑视图
基础设施(Infrastructu
re):它可以是你的个人电脑,数据中心的服务器,或者是云主机。
虚拟机管理系统(Hypervisor):利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。有支持MacOS的HyperKit,支持Windows的Hyper-V、Xen以及KVM,以及VirtualBox和VMWare workstation。
客户机操作系统(Guest OS):假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个客户机操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
各种依赖(Bins/Libs):每一个客户机操作系统都需要安装许多依赖。如果你的应用需要连接PostgreSQL的话,则需要安装libpq-dev;如果你使用Ruby的话,应该需要安装gems;如果使用其他编程语言,比如Python或者Node.js,都会需要安装对应的依赖库。
应用(App):安装依赖之后,就可以在各个客户机操作系统分别运行应用了,这样各个应用就是相互隔离的。
总结
从一台物理机可以虚拟化出很多的虚拟机,一定程度上实现了资源使用的灵活性。但是,虚拟化的方式其实还是非常的复杂的。虚拟机虽然是虚拟的,但是他也用有Guest OS,并且需要由VMM负责CPU,内存,网络,存储全部都虚拟化。一个都不能偷懒。于是,linux中的容器container技术(docker)提供了一种更加灵活的方式。既可以隔离出一部分资源,专门用于某个进程,又不需要费尽周折的虚拟化这么多的硬件。毕竟,我只是想跑一个程序,而不是要一整个的linux系统。其实,容器就像船上的不同集装箱封装着不同的货物。封装带来了好处,一个是打包,二是标准化。但你完全可以在虚拟机上运行容器。了解这一点很重要,因为这里没有明显的赢家或输家。事实上,这两种技术的需求完全不同。
两者虽然都属于虚拟化的技术,目标都是为了将一套应用程序所需的执行环境打包起来,建立一个孤立环境,方便在不同的硬件中移动,但两者的运作思维截然不同。简单来说,常见的传统虚拟化技术如vSphere或Hyper-V是以操作系统为中心,而Docker Container技术则是一种以应用程序为中心的虚拟化技术。 传统虚拟化技术从操作系统层下手,目标是建立一个可以用来执行整套操作系统的沙盒独立执行环境,习惯以虚拟机(Virtual Machine)来称呼。而Docker Container技术则是直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来建立沙盒执行环境,为了和传统虚拟化技术产生的虚拟机区分,Container技术产生的环境就称为Container。
相关推荐
- 微软发布Win11/10 ISO镜像Defender更新,提升系统初始安全性
-
IT之家7月27日消息,除了Setup及WinRE更新外,NeoWin发现微软本周还针对Windows11/10/Server安装镜像发布了新的Defender安全智能...
- 微软革新Windows装机体验:内置应用全面升级,安全与便捷双提升
-
Windows内置应用迎来重大变革:更安全、更快速的初始体验如果您曾亲自安装过Windows11,或许注意到其内置应用并非开箱即用,而是一些占位程序,需要首次运行时从微软应用商店(Microsoft...
- Hotpatch继续扩展 现在更多Windows PC在更新后无需重启
-
Windows11最近从其服务器版本中获得了一项非常重要的功能:Windows热补丁。该功能旨在通过允许操作系统在无需重启的情况下安装重要的安全更新来最大限度地减少停机时间和中断。最初,微软在...
- 微软承认Windows Server六月更新存在BUG:导致DHCP服务器故障
-
IT之家6月17日消息,科技媒体WindowsLatest今天(6月17日)发布博文,报道称微软承认6月WindowsServer更新存在BUG,可能导致DHCP服...
- Windows Server2019安装Hyper-V的2个简单方法!
-
关于WindowsServer2019WindowsServer2019是微软发布的服务器操作系统,是WindowsServer2016的后续版本。它包含了许多新的特性和改进,适用于数据中心...
- 如何在不满足系统要求的旧计算机上安装 Windows 11 24H2
-
如果你想了解这个安装工具以及安装方法(老飞摄影微信公众号内提供安装包下载),请完整的看完后面的文字,以避免在安装过程当中出现问题。Windows11通常需要某些硬件功能,例如TPM和安全启动,...
- 第 137 期:微软表示 Windows 11 24H2 是迄今为止最稳定的版本
-
就在刚刚,微软“大言不惭”地声称,Windows1124H2是迄今为止最可靠的Windows版本。我们并不是说它很糟糕,因为我们每天的工作中也在使用它。上述言论只是一份微软的一份官方文件的一...
- Windows 11 将推出带有“高级”选项的新设置页面
-
Windows11即将迎来一个包含一些高级功能的全新“设置”页面。严格来说,它并非全新功能。它更像是“开发者”栏目的重新设计,用户和开发者可以在其中调整各种附加功能。微软可能明白这些东西不仅对开发...
- Windows server 2025 重复数据删除
-
一、概述windowsserver中的重复数据删除功能从windowsserver2012就开始支持了。Windowsserver中默认没有安装重复数据删除功能。在磁盘分区(卷)上启用重复...
- Windows Server 2025预览版迎来更新,微软改善Insiders测试体验
-
在发布WindowsServer的build26040版本之际,微软公布了该产品的官方名称:WindowsServer2025。一同推出的,还有Windows11WindowsInsid...
- 升不升?Win11 24H2大范围推送了
-
微软在其官方支持文档中宣布,24H2版现在已经开始向运行Windows11原始版本、22H2和23H2版的合格设备推送。Windows11的24H2更新现已进入新的可用性阶段,这意味着更多符合条件...
- 微软发布Win11/10/Server安装镜像Defender更新
-
IT之家6月22日消息,继上个月为Lumma发布更新后,微软本月也为Windows11/10/Server安装镜像发布了新的Defender更新。此更新包很有必要,因为Wi...
- 第 81 期:微软最近的更新给 Windows Server 带来了 DHCP 问题
-
近日,微软确认,DHCP服务器服务可能会在WindowsServer安装2025年6月更新后停止响应或拒绝连接。DHCP问题会影响WindowsServer2025(KB50...
- windws server 2012 R2 虚拟机windows server2019 经常断网事件
-
故障现象:在windowsserver2012R2的虚拟主机上面搭建一个Windowsserver2019的虚拟机系统用来做域控。安装完设置好防火墙和IP,经过测试是可以ping同正常访问...
- 微软扩展热补丁部署,现覆盖ARM架构Win11 24H2设备
-
IT之家7月9日消息,科技媒体NeoWin今天(7月9日)发布博文,报道称微软扩大热补丁(WindowsHotpatching)覆盖范围,在AMD和英特尔处理器设备外,现覆盖支...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
-
- 微软发布Win11/10 ISO镜像Defender更新,提升系统初始安全性
- 微软革新Windows装机体验:内置应用全面升级,安全与便捷双提升
- Hotpatch继续扩展 现在更多Windows PC在更新后无需重启
- 微软承认Windows Server六月更新存在BUG:导致DHCP服务器故障
- Windows Server2019安装Hyper-V的2个简单方法!
- 如何在不满足系统要求的旧计算机上安装 Windows 11 24H2
- 第 137 期:微软表示 Windows 11 24H2 是迄今为止最稳定的版本
- Windows 11 将推出带有“高级”选项的新设置页面
- Windows server 2025 重复数据删除
- Windows Server 2025预览版迎来更新,微软改善Insiders测试体验
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)