『现学现忘』Docker相关概念 — 8、虚拟化技术和容器技术的关系
1、云计算中虚拟化技术和容器技术到的关系
通过一个关于房间和住人的小问题,我们来初步的理解一下虚拟化技术和容器技术的关系。
首先有一个大前提就是一个房间只允许一家人来住。这个房间很大,500平米,有床、有厨房、有卫生间。你一家一共就3口人,就你一家人住,别人家只好再找房子,好浪费,资源利用率好低啊。(房子就相当于计算机的硬件基础)
首先是虚拟化上场了,把这个大房子从隔成20间小房子。注意不是那种真砌墙的方式来分隔,而是比如拉上布帘的方式。(不是把硬件真正的分割,而是按需求,虚拟分割。)注意,每个小“房间”是一个独立的空间,都有床、有厨房、有卫生间。这样就可以住20户人家了。这样资源利用率真就提高了,但还是有问题,厨房、卫生间并不是这20家人都会同时使用的啊。(厨房、卫生间相当于Guest OS和Host OS操作系统)
此时,该容器上场了!还是刚才500平的那个大房间。容器也是分隔,由于并不是每家人都要同时使用厨房、卫生间。所以可以把刚才的房间隔成50间,每家只有床是独立的。厨房和卫生间则采用公共的,按使用情况进行分配即可。这样就能住50家人了,资源利用率真就大大提高了。(只留下Host OS操作系统,去掉了占用过多无效资源的Guest OS操作系统)
所以说,容器是一种轻量级的虚拟化技术,在同等配置的服务器上,容器技术能够轻松更多的应用。对于每一个容器,他们其实是使用同一个宿主机的内核和系统库文件(相当于刚才说的公开卫生间和厨房)。
2、虚拟机和容器对比
这里我们直接通过虚拟机和容器技术的剖析图来分析,就更容易看出容器虚拟化是如何在效率上完胜虚拟机的。
下面两张图很清楚的说明了虚拟机和容器差别:

由于没有了虚拟操作系统和虚拟机监视器这两个层次,大幅减少了应用程序运行带来的额外消耗。
更准确的来说,所有在容器中的应用程序,其实完全运行在了宿主操作系统中,与其他真实运行在其中的应用程序,在指令运行层面是完全没有任何区别的。
下表总结了使用Docker容器技术与传统虚拟机技术的特性比较。

3、虚拟化技术和容器技术区别
传统虚拟化技术从操作系统层下手,目标是建立一个可以用来执行整套操作系统的沙盒独立执行环境,习惯以虚拟机(Virtual Machine)来称呼。
Container技术则是直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来建立沙盒执行环境,Container技术产生的环境就称为Container。
(1)两者具体区别
- 虚拟机需要安装操作系统(安装
Guest OS)才能执行应用程序,而Container内不需要安装操作系统就能执行应用程序 Container技术不是在OS外在建立虚拟环境,而是在OS内的核心系统层来打造虚拟执行环境,透过共享Host OS的作法,取代一个一个Guest OS的功用。Container也因此被称为是OS层的虚拟化技术。
(2)Container是轻量级虚拟化技术
Container技术采取共享Host OS的作法,而不需在每一个Container内执行Guest OS,因此建立Container不需要等待操作系统开机时间,不用1分钟或几秒钟就可以启用,远比需要数分钟甚至数十分钟才能开启的传统虚拟机来的快。
参考:
『现学现忘』Docker相关概念 — 8、虚拟化技术和容器技术的关系的更多相关文章
- 『现学现忘』Docker相关概念 — 1、云计算概念
目录 1.云计算的概念 2.示例说明云计算 3.小故事说明云计算 "云计算"这个词,相信大家都非常熟悉. 作为信息科技发展的主流趋势,它频繁地出现在我们的眼前.伴随它一起出现的,还 ...
- 『现学现忘』Docker相关概念 — 2、云计算的服务模式
目录 1.最底层的,就是IaaS 2.再往上,就是PaaS 3.继续往上,就是SaaS 4.IaaS.SaaS.PaaS三者之间的关系 上一篇文章详细介绍了什么是云计算: 云是一种服务,可以像使用水. ...
- 『现学现忘』Docker相关概念 — 3、IaaS、SaaS、PaaS服务模式补充
目录 1.IaaS服务模式 2.PaaS服务模式 (1)何时使用PaaS (2)PaaS的特点 (3)PaaS优势 3.SaaS服务模式 云计算通俗来说就是输入/输出和计算不在一个主机上.计算要用到计 ...
- 『现学现忘』Docker相关概念 — 4、虚拟化概念
目录 1.虚拟化的概念 2.为什么出现虚拟化 3.虚拟化技术 1.虚拟化的概念 虚拟化是指通过虚拟化技术将计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操 ...
- 『现学现忘』Docker相关概念 — 6、虚拟化技术分类
目录 1.按照虚拟化的程度分类 (1)完全虚拟化技术 (2)半虚拟化技术 (3)完全虚拟化与半虚拟化优缺点 2.从虚拟化架构分类 (1)寄居架构 (2)裸金属架构 虚拟化是一个广义的术语,是指计算元件 ...
- 『现学现忘』Docker基础 — 16、Docker中的基本概念和底层原理
目录 1.Docker的底层原理 2.Docker中常用的基本概念 3.run命令的运行流程 4.为什么Docker比VM快 Docker架构图: 我们依照Docker架构图进行Docker基础概念的 ...
- 『现学现忘』Docker常用命令 — 20、容器常用命令(二)
提示:接上一篇 目录 9.后台启动容器 10.查看容器日志 11.查看容器内运行的进程 12.查看容器内部细节 9.后台启动容器 后台启动容器也叫启动守护式容器. 命令:docker run -d 镜 ...
- 『现学现忘』Docker常用命令 — 21、容器常用命令(三)
目录 13.进入正在运行的容器并以命令行交互 (1)方式一 (2)方式二 (3)attach和exec的区别 14.从容器内拷贝文件到主机上 15.Docker常用命令小结 (1)容器生命周期管理 ( ...
- 『现学现忘』Docker基础 — 29、Docker容器数据卷的应用
目录 1.验证容器和宿主机之间数据共享 2.容器停止退出后,主机修改后数据是否同步 3.带只读权限的挂载数据卷 1.验证容器和宿主机之间数据共享 通过上面的操作,接下来我们演示一下通过数据卷的挂载,实 ...
随机推荐
- python小兵 面向对象继承super和c3算法
python多继承 在前面的学习过程中. 我们已经知道了Python中类与类之间可以有继承关系. 当出现了x是一种y的的时候. 就可以使⽤继承关系. 即"is-a" 关系. 在继承 ...
- 资本主义反抗指南精要(v0.1)
(1)充分预估工作时间,比如一小时的开发任务,你可以加上技术调研,API/数据库设计,单元测试,联调,集成测试等等,拖到一天,同理一天的任务可以拖到一星期. (2)简历上尽一切手段来美化,最好能包装成 ...
- Linux Shell中的数组及遍历 转
转自:http://www.linuxidc.com/Linux/2011-09/42929.htm 在Linux下使用shell的时候,为方便起见,偶尔会用到一下数组.数组的申明方式是: array ...
- ListIterator特有的方法
import java.util.ArrayList; import java.util.List; import java.util.ListIterator; /* 迭代 listIterator ...
- 关于setInterval方法中function的定义方法
使用window对象的setInterval方法,作为第一个参数传递的function必须在全局作用域中定义,否则会出现报错而无法执行. 具体如下: 在下面的代码中,试用jQuery方式在回调函数中使 ...
- -bash: ./bin/shutdown.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录
为什么会出现这种问题: 1.这个问题的原因就是我们放在服务器的脚步类型是dos,而不是unix类型,所以会导致出现(-bash: ./bin/shutdown.sh: /bin/bash^M: bad ...
- MyBatis加强(4)~mybatis 插件开发
一.插件介绍[动态代理] 1.插件[动态代理]:mybatis 允许在已经映射的语句的执行过程的某个时机进行拦截增强的机制. 2.mybatis中的组件动态代理的运用: MyBatis 在四大组件对象 ...
- Solution -「CF 1375G」Tree Modification
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个结点的树,每次操作选择三个结点 \(a,b,c\),满足 \((a,b),(b,c)\in E\),并令 ...
- 《从零开始, 开发一个 Web Office 套件》系列博客目录
这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 对应的Github r ...
- OpenHarmony移植:如何适配utils子系统之KV存储部件
摘要:本文介绍移植开发板时如何适配utils子系统之KV存储部件,并介绍相关的运行机制原理. 本文分享自华为云社区<OpenHarmony移植案例与原理 - utils子系统之KV存储部件> ...