标签:superuser 操作系统 footer googl www free 存在 解释 安装
转自:https://zhuanlan.zhihu.com/p/22382728
https://zhuanlan.zhihu.com/p/22403015
在学习docker的过程中,我发现目前docker学习最大的障碍,不是网上的资源太少,而是网上的资源太多,资源太多带来的噪声让学习效率降低不少。而在讲解docker原理上,所有的讲解都是关于cgroups,namespace,aufs以及deviceMapper,这对于一个初学者来说,就是用一堆名词替换另一堆名词,所以我打算写一篇不涉及太多api的原理解析,在这篇解析中,将不会讨论:
在开始讨论前,先抛出一些问题,可先别急着查看答案,讨论的过程可以让答案更有趣,问题如下:
先来理解一下虚拟机概念,广义来说,虚拟机是一种模拟系统,即在软件层面上通过模拟硬件的输入和输出,让虚拟机的操作系统得以运行在没有物理硬件的环境中(也就是宿主机的操作系统上),其中能够模拟出硬件输入输出,让虚拟机的操作系统可以启动起来的程序,被叫做hypervisor。用一张图来说明这个关系就是:
在这张图中:
比如,举一个大家都很熟悉的例子,在编写android程序时,调试和测试运行都可以在X86架构的台式机或笔记本进行,这就是一个典型的虚拟机例子,在这之中:
当然android模拟机一个大问题就是:启动速度非常慢,最长可达10分钟或以上,这是因为单纯模拟硬件的输入输出,效率是很差的,所以这样的虚拟机如果真部署在服务器上,速度是感人的。
这个时候,就有计算机科学家提出了非常偷懒的想法:假如我们不模拟硬件输入输出,只是做下真实硬件输入输出的搬运工,那么虚拟机的指令执行速度,就可以和宿主机一致了。当然这前提是宿主机的硬件架构必须和虚拟硬件架构一致。比如,
由于本篇并不是主要关于虚拟机的内容,所以这些点就点到而止,更多详细内容可以参阅:Hypervisor
一般来说,虚拟机都会有自己的kernel,自己的硬件,这样虚拟机启动的时候需要先做开机自检,启动kernel,启动用户进程等一系列行为,虽然现在电脑运行速度挺快,但是这一系列检查做下来,也要几十秒,也就是虚拟机需要几十秒来启动。
更多关于容器的内容可以看这份课件:https://courses.engr.illinois.edu/cs423/lectures/VirtOS.pdf
至此就可以回答引言提到的两个问题:
标签:superuser 操作系统 footer googl www free 存在 解释 安装
原文地址:http://www.cnblogs.com/heyanan/p/7800284.html