Docker与虚拟机比较

在对比Docker和虚拟机前,先简单了解下虚拟化,明确Docker和虚拟机分别对应的虚拟化级别,然后对Docker和虚拟机进行比较。需要注意的是,Docker和虚拟机并没有什么可比性,而是Docker使用的容器技术和虚拟机使用的虚拟化技术的比较。

虚拟化(Virtualization)简介

虚拟化是一个通用的概念,在不同的领域有不同的理解。在计算机领域,一般指的是计算虚拟化(Computer Virtualization)。维基百科上对计算机虚拟化的定义如下:

在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,
予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原来的组态更好的方式来应用这些资源。  

可见,虚拟化的核心是对资源的抽象,目标往往是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。
根据作用的对象,可将虚拟化分为基于硬件的虚拟化和基于软件的虚拟化。注意,真正意义上的基于硬件的虚拟化技术并不多见,少数如网卡中的单根多IO虚拟化(Single Root I/O Virtualization and Sharing Specification,SR-IOV)等技术,不在本文的讨论范围。
基于软件的虚拟化从对象所在的层次,有可以分为应用虚拟化和平台虚拟化。其中应用虚拟化一般指的是一些模拟设备,如一些模拟器软件。平台虚拟化又可细分为以下几个子类:
(1) 完全虚拟化。虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统无需进行修改。如VMware Workstation、VirtualBox等。
(2) 硬件辅助虚拟化。利用硬件辅助支持处理敏感指令来实现完全虚拟化的功能,客户操作系统无需修改,如VMware Workstation、KVM等。
(3) 部分虚拟化。只针对部分硬件资源进行虚拟化,客户操作系统修改进行修改。现在某些虚拟机技术的早期版本支持部分虚拟化。
(4) 超虚拟化。部分硬件接口以软件的形式提供给客户操作系统,客户操作系统需要进行修改,如早期的Xen。
(5) 操作系统级虚拟化。内核通过创建多个虚拟的操作系统实例(内核和库)来隔离(如容器技术)不同的进程,如Docker。

请添加图片描述

Docker与虚拟机比较

对于虚拟机来说,虚拟机通过硬件虚拟化功能模拟出运行一个操作系统所需的各种硬件,比如CPU、内存、I/O设备等。然后,它在这些虚拟的硬件上安装一个新的操作系统——客户操作系统(Guest OS)。这样,用户的应用程序就可以在这个虚拟的机器中运行。
对于Docker来说,Docker通过容器技术,在操作系统的上层提供了隔离的环境。然后用户的应用程序就可以在这个隔离的环境中运行。
虚拟机和Docker的架构差异可以用下图表示:

请添加图片描述

从上图可知,虚拟机通过虚拟的硬件,可安装一个操作提供和其他应用程序。所以,虚拟机创建的时间比较长,启动时间以分钟为单位。因为在运行应用程序前还得运行整个操作系统,所以分配所需的CPU、内存、磁盘等资源较多。同时,基于虚拟机方式运行N个不同的应用需要启用N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),运行密度较低。虚拟机因为提供了隔离操作系统的环境,所以可以实现完全隔离,从而保证安全性。
而Docker等容器引擎,可以和主机的内核直接打交道。因为容器中运行的应用程序和计算机的操作系统之间没有额外的中间层,没有资源被冗余软件的运行或虚拟硬件的模拟浪费掉。所以,容器的创建时间较短,启动时间以秒为单位。且分配所需的CPU、内存、磁盘等资源较少。同时,基于容器方式运行N个不同的应用只需要启用N个容器即可,运行密度较高。Docker等容器引擎利用namespace、cgroup、根文件系统等技术实现了容器隔离环境,支持进程级隔离,存在一定的安全风险。但是,从1.3.0版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大地提高了使用Docker的安全性。在已知的大规模应用中,目前尚未出现值得担忧的安全隐患。
Docker等容器引擎与虚拟机的比较,可以总结为一下几个方面:

特性容器虚拟机
隔离提供与主机和其他容器的轻度隔离,但不提供与虚拟机一样强的安全边界提供与主机和其他VM的完全隔离。
启动速度秒级分钟级
性能接近原生较弱
资源占用运行操作系统的用户模式部分,可以对其进行定制,使之只包含应用所需的服务,减少所使用的系统资源。运行包含内核的完整操作系统,需要更多的系统资源,如CPU、内存、存储等。
运行密度单机支持上千个容器单机一般十几个
安全性轻度隔离,存在不安全隐患完全隔离,安全性更高

参考

《Docker实战》 Jeff Nickoloff 著, 胡震,杨润青 黄帅 译
《Docker技术入门与实战》 杨保华 戴王剑 曹亚仑 著
https://blog.daocloud.io/4001.html 容器与虚拟机
https://zhuanlan.zhihu.com/p/81525291 虚拟机与容器的区别
https://zhuanlan.zhihu.com/p/271846374 容器、Docker、虚拟机
https://learn.microsoft.com/zh-cn/virtualization/windowscontainers/about/containers-vs-vm 容器与虚拟机
https://aijishu.com/a/1060000000206531 Docker容器、虚拟机和裸机运行的性能比较

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

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

相关文章

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart:手指触摸动作开始 bindtouchmove:手指触摸后移动 bindend:手指触摸动作结束 属性类型说明touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

《HelloGitHub》第 95 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C、Swift...让你在短时间内…

DDR5内存相比DDR4内存的优势和区别?选择哪一个服务器内存配置能避免丢包和延迟高?

根据幻兽帕鲁服务器的实际案例分析,选择合适的DDR4与DDR5内存大小以避免丢包和延迟高,需要考虑以下几个方面: 性能与延迟:DDR5内存相比DDR4在传输速率、带宽、工作电压等方面都有显著提升,但同时也伴随着更高的延迟。D…

Javaweb之SpringBootWeb案例之自动配置的两种常见方案的详细解析

3.2.2.2 方案一 ComponentScan组件扫描 SpringBootApplication ComponentScan({"com.itheima","com.example"}) //指定要扫描的包 public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(Sprin…

Wireless LAN演进整理以及STA与AP之间的关联行为

一、WLAN standard WLAN标准也是由电机电子工程师学会 (IEEE, Electrical and Electronics Engineers)组织制定的,WLAN标准统称为802.11 二、802.11传输标准 IEEE标准 名称 年份 频道 最高传输速率 调变方式 802.11 WIFI 0 1997 2.4 GHz 2 Mbps DSSS 8…

STM32------分析GPIO寄存器

一、初始LED原理图 共阴极led LED发光二极管,需要有电流通过才能点亮,当有电压差就会产生电流 二极管两端的电压差超过2.7v就会有电流通过 电阻的作用 由于公式IV/R 不加电阻容易造成瞬间电流无穷大 发光二极管工作电流为10-20MA 3.3v / 1kΩ 3.…

如何在群晖Docker运行本地聊天机器人并结合内网穿透发布到公网访问

文章目录 1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛,包括聊天机…

获取linuxIP、内存、cpu、磁盘IO等信息的Shell脚本及其讲解

shell基础知识 1.grep grep是一个在Unix和Unix-like系统上使用的命令行工具,用于在文本文件中搜索匹配指定模式的行。它的名字来自于"global regular expression print"(全局正则表达式打印)的缩写。grep的基本用法是通过指定一个…

Redis之十:Spring Data Redis --- CrudRepository方式

SpringData Redis CrudRepository方式 Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基础 CRUD(创建、读取、更新和删除)操作的一个接口。在与 Redis 集成时,尽管 Redis 是一个键值存储系统,并没有像关系型…

iOS卡顿原因与优化

iOS卡顿原因与优化 1. 卡顿简介 卡顿: 指用户在使用过程中出现了一段时间的阻塞,使得用户在这一段时间内无法进行操作,屏幕上的内容也没有任何的变化。 卡顿作为App的重要性能指标,不仅影响着用户体验,更关系到用户留…

零拷贝技术深入分析

一、零拷贝 在前面的文章“深浅拷贝、COW及零拷贝”中对零拷贝进行过分析,但没有举例子,也没有深入进行展开分析。本文将结合实际的例程对零拷贝进行更深入的分析和说明。 在传统的IO操作中,以文件通过网络传输为例 ,一般会经历以…

深度学习 精选笔记(4)线性神经网络-交叉熵回归与Softmax 回归

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

并查集(Disjoint Set)

目录 1.定义 2.初始化 3.查找 4.合并 4.1.按秩合并(启发式合并) 5.例题 题目描述 输入格式 输出格式 输入输出样例 说明/提示 1.定义 并查集,也称为不相交集合数据结构,是一种用于管理元素分组以及查找元素所属组的数…

MWC 2024丨世界移动通信大会圆满结束,美格智能5G-A、端侧AI解决方案掀热潮

2月26日—29日,全球瞩目的2024世界移动通信大会(MWC)在西班牙巴塞罗那隆重举办。本届MWC以“未来先行”为主题,围绕“超越5G”、“智联万物”、“AI人性化”等话题展开,吸引了全球2400多家电信运营商、通信设备和终端制…

亿道信息新品EM-T195轻薄型工业平板,隆重登场!

EM-T195是一款轻巧但坚固的平板电脑,仅 650克重、10.5mm毫米厚,即使没有额外的便携配件进行辅助,您也可以轻松将其长时间随身携带。耐用性外壳完全密封,防尘防潮;出色的坚固性和可靠性,使T195天生适合在苛刻…

政府采购标书制作的要点解析

导语:政府采购是政府为满足公共利益,按照法定程序和标准,通过招标、竞争性谈判等方式,购买商品、工程和服务的行为。标书作为政府采购活动中的重要文件,其制作质量直接影响到项目的顺利进行。本文将围绕政府采购标书制…

导览系统厂家|景区电子导览|手绘地图|AR导览|语音导览系统

随着元宇宙、VR、AR等新技术的快速发展,旅游服务也更加多元化、智能化。景区导览系统作为旅游服务的重要组成部分,其形式更加多元化智能化。智能导览系统作为一种新的服务方式,能够为游客提供更加便捷的旅游服务和游览体验,也逐渐…

Android Gradle开发与应用 (四) : Gradle构建与生命周期

1. 前言 前几篇文章,我们对Gradle中的基本知识,包括Gradle项目结构、Gradle Wrapper、GradleUserHome、Groovy基础语法、Groovy语法概念、Groovy闭包等知识点,这篇文章我们接着来介绍Gradle构建过程中的知识点。 2. Project : Gradle中构建…

平台工程: 用Backstage构建开发者门户 - 1

本文介绍了如何使用开源Backstage构建自己的开发者门户,并基于此实践平台工程。本系列共两篇文章,这是第一篇。原文: Platform Engineering: Building Your Developer Portal with Backstage — Part 1 在上一篇文章(平台工程与安全)中,我们介…

Python实现PPT演示文稿中视频的添加、替换及提取

无论是在教室、会议室还是虚拟会议中,PowerPoint 演示文稿都已成为一种无处不在的工具,用于提供具有影响力的可视化内容。PowerPoint 提供了一系列增强演示的功能,在其中加入视频的功能可以大大提升整体体验。视频可以传达复杂的概念、演示产…