『现学现忘』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 小兵面向对象
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- 读取数据库Blob类型的文本数据
开发一个查询功能时,遇到了一个ORM的问题:数据库字段是 Blob 类型,里面实际存储的是文本数据,Java 后端代码中用字符串 String 类型去接收这个字段的数据时,报错,提示没有对应的sett ...
- webpack打包如何统一js和css中图片资源路径
目前项目应用的是vue-cli,自行修改了部分配置.三个环境的情况跟你差不多,测试/生产环境的层级比你还深. 先说下修改了哪些配置 1-build/utils.js下的cssLoaders内的gene ...
- PHP中常见的数字掐头去尾操作方法
四舍五入round round( float $val[, int $precision = 0[, int $mode = PHP_ROUND_HALF_UP]] ) : float 对浮点数进行四 ...
- KVC替换系统的tabbar为自定义tabbar---秀清
CustomTabbar *tabbar = [[CustomTabbar alloc]init]; //KVC,更换系统的tabbar为自定义tabbar tabbar.tabbarDelegate ...
- 一招教你IDEA中Java程序如何打包,以及打包后如何运行
前言 编写程序 程序打包 测试运行 IDEA作为目前按最主流的Java程序项目编写工具,越来越受到开发人员的青睐.idea因为其五花八门的功能,让你在开发过程中效率显著提高.那么对于初学者来说,如何通 ...
- 编译安装haproxy
一.安装lua环境 1.1 安装依赖包 [root@centos7 ~]# yum install gcc readline-devel 1.2 下线lua源码包并解压 [root@centos7 ~ ...
- python基础语法_8循环语句
http://www.runoob.com/python3/python3-loop.html while 循环 Python中while语句的一般形式: while 判断条件: 语句 无限循环 我们 ...
- drop、truncate、delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独 ...
- 我们一起来学Shell - 初识shell
文章目录 Shell 的分类 `bash` `csh` `ksh` `tcsh` `sh` `nologin` `zsh` Shell 能做什么 bash 环境变量文件 `/etc/profile` ...