docker跟一般的虚拟机有啥区别

author author     2023-03-16     465

关键词:

Docker和虚拟机有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣势:
1、Docker启动快速属于秒级别,虚拟机通常需要几分钟去启动;
2、Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交互,几乎没有性能损耗,而虚拟机就差了很多;
3、Docker更轻量,Docker的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对系统的利用率非常高;
4、与虚拟机相比,Docker隔离性更弱,Docker属于进程之间的隔离,虚拟机可实现系统级别隔离;
5、Docker的安全性也更弱,Docker的租户root和宿主机root相同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离;
6、Docker的集中化管理工具还不算成熟,各种虚拟化技术都有成熟的管理工具,比如:VMware vCenter提供完备的虚拟机管理能力;
7、Docker对业务的高可用支持是通过快速重新部署实现的,虚拟化具备负载均衡,高可用、容错、迁移和数据保护等经过生产实践检验的成熟保障机制,Vmware可承诺虚拟机99.999%高可用,保证业务连续性;
8、虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节省大量时间;
9、虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化,Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署。
参考技术A IBM研究部门发表了一篇关于容器和虚拟机环境性能比较的论文。这篇论文使用了Docker和KVM作为研究对象,阐述了Docker使用NAT或AUFS时的开销,并且质疑了在虚拟机上运行容器的实践方法。
论文作者在原生、容器和虚拟化环境中运行了CPU、内存、网络和I/O的benchmark。其中,分别使用KVM和Docker作为虚拟化和容器技术的代表。Benchmark也包含了对不同环境下Redis和MySQL负载的采样。通过小数据包和多客户端,Redis侧重于网络栈的性能。而MySQL侧重于内存,网络和文件系统的性能。
结果显示,在每一项测试中,Docker的性能等同于或超出KVM的性能。在CPU和内存性能方面,KVM和Docker都引入了明显的,但可略不计的开销。但是,对于I/O密集型的应用,两者都需要进行调整以减少开销带来的影响。
当使用AUFS存储文件时,Docker的性能会降低。而相比之下,使用卷(volume)能够获得更好的性能。卷是一种专门设计的目录,存在于一个或多个容器内。通过这种目录能够绕过联合文件系统(union file system)。这样它就没有了存储后端可能带来的开销。默认的AUFS后端会引起显著的I/O开销,特别是当有多层目录深度嵌套的时候。
Docker的默认网络选项,--net=bridge,由于NAT会重写数据包,也引入了性能开销。当数据包收发率变高时,这种开销会变得很明显。可以通过使用--net=host改善网络的性能。这个选项告诉Docker不要为容器创建一个独立的网络栈,并允许容器拥有宿主机网络接口的完全访问权限。但是,使用这个选项时要小心。因为它允许容器内的进程像其他根进程一样,使用数值较小的端口;并允许容器内的进程访问本地网络服务,如D-bus。这使得容器内的进程可以做一些预料之外的事情,如重启宿主机。

docker容器与虚拟机有啥区别?

参考技术A我们单位最近在推docker,已经在开发测试环境使用(稍显落后),下面我就谈谈自己的Docker的理解,以及Docker和虚拟机的区别。虚拟机先说说什么是虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系... 查看详情

docker和传统虚拟机有啥区别?

参考技术A  Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好,但也有人认为虚拟机比Docker更好,那么Docker和虚拟机哪个好?相信不少人对此有所疑问,具体内容请看下文:  Docker和虚拟机有各自擅长的领域,在软... 查看详情

在 Azure 中,两个适用于 Windows 的数据科学虚拟机有啥区别?

】在Azure中,两个适用于Windows的数据科学虚拟机有啥区别?【英文标题】:InAzure,whatisthedifferencebetweenthetwoDataScienceVirtualMachinesforWindows?在Azure中,两个适用于Windows的数据科学虚拟机有什么区别?【发布时间】:2017-10-0305:44:02【问... 查看详情

docker和虚拟机有什什么区别?

...要的二进制和库,以及一个完整的用户操作系统。2、Docker:容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态 查看详情

docker 镜像的大小和虚拟大小有啥区别?

】docker镜像的大小和虚拟大小有啥区别?【英文标题】:Whatisthedifferencebetweenthesizeandthevirtualsizeofthedockerimages?docker镜像的大小和虚拟大小有什么区别?【发布时间】:2016-10-2407:59:30【问题描述】:我有一个私有注册表,用于存储... 查看详情

推理机和语义推理机有啥区别?

】推理机和语义推理机有啥区别?【英文标题】:What\'sthedifferencebetweenaninferencemachineandasemanticreasoner?推理机和语义推理机有什么区别?【发布时间】:2011-08-1816:32:09【问题描述】:我发现了一些关于两者的简短文章,对我来说,... 查看详情

docker与虚拟机有何不同

docker与虚拟机有何不同Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器技术有很多种,Docker是目前最流行的一种,... 查看详情

redis数据库跟mongodb数据库有啥区别呢?

...很强的NoSql数据库,在内存足够的情况下性能出色,但是一般情况下,服务器内存并没有那么多。一般情况下,Redis会索取大量服务器内存进行存储数据,以达到快速读取查询的效果。当对Redis插入数据后,redis会异步将数据dump到... 查看详情

Docker 和 Python virtualenv 有啥区别?

】Docker和Pythonvirtualenv有啥区别?【英文标题】:What\'sthedifferencebetweenDockerandPythonvirtualenv?Docker和Pythonvirtualenv有什么区别?【发布时间】:2018-12-0103:58:24【问题描述】:根据我对Docker的了解,它是一种用于虚拟环境的工具。在他... 查看详情

最优化方法跟最优化导论有啥区别

...可是,既然叫法不同,它俩还是有一点点区别的。运筹学一般偏重于工程应用,最优化方法偏重于理论研究。相对来说,一般的运筹学方面的书,内容基本都一样。而最优化方法方面的书就百花齐放,各有各的侧重了。所以,一... 查看详情

VM 镜像和 Docker 镜像有啥区别? [复制]

】VM镜像和Docker镜像有啥区别?[复制]【英文标题】:WhatarethedifferencesbetweenaVMimageandaDockerimage?[duplicate]VM镜像和Docker镜像有什么区别?[复制]【发布时间】:2015-05-1918:09:00【问题描述】:Docker和虚拟机的镜像有什么不同吗?除了图... 查看详情

退还跟退回有啥区别?退回和退还有啥不同

...不动产或者动产参考技术A大同小异,略有差别。退还,一般指道义上讲,本来不属于自己的东西或多出来的部分,还给原主人,如,退还押金。退回,也有这个意思,但还有一个意思,就是对自己不满意的东西还给原主人,要... 查看详情

虚拟机中ide磁盘和sdsi磁盘有啥区别

...型.对虚拟机而言是指把虚拟硬盘虚拟成什么类型.虚拟机一般选用IDE模式的硬盘,选scsi的时候,有可能出现:“不能发现硬盘”的错误,这是因为SCSI硬盘时需要使用驱动程序来驱动的.里选择SCSI可避免实际的硬盘传输速率被虚拟... 查看详情

docker容器与虚拟机区别

...轻量级的虚拟化,实现进程和资源的隔离。从架构来看,Docker比虚拟化少了两层,取消了hypervisor层和GuestOS层,使用DockerEngine进行调度和隔离 查看详情

docker和虚拟机的区别

参考技术Adocker是一种具体的虚拟化技术虚拟机是个虚拟化技术的一个虚拟出来的机器为什么叫虚拟,是和物理机对应的。传统一台物理机装一个linux系统虚拟化技术可以使得一台物理机做出来多多个虚拟机,每个虚拟机装一个lin... 查看详情

docker介绍

Docker是Golang编写的,自2013年推出以来,受到越来越多的开发者的关注。如果你关注最新的技术发展,那么你一定听说过Docker。不管是云服务还是微服务(Microservices),越来越多的厂商都开始基于Docker作为基础设施自动化的工具... 查看详情

Docker中的导入和加载有啥区别?

】Docker中的导入和加载有啥区别?【英文标题】:WhatisthedifferencebetweenimportandloadinDocker?Docker中的导入和加载有什么区别?【发布时间】:2016-08-2320:13:59【问题描述】:我了解export(用于容器)和save(用于图像)之间的区别。但... 查看详情

Docker 镜像的镜像 ID 和它的摘要有啥区别?

】Docker镜像的镜像ID和它的摘要有啥区别?【英文标题】:What\'sthedifferencebetweenaDockerimage\'sImageIDanditsDigest?Docker镜像的镜像ID和它的摘要有什么区别?【发布时间】:2019-10-1507:21:27【问题描述】:这让我感到非常困惑。我认为Docker... 查看详情