什么是docker与虚拟机的不同之处是什么
这段时间为了能适应新的工作狂补云计算方向的基础知识,上面这句话也是我的一个疑问。再查看了一些资料和以往的知识我罗列了几点对比和介绍Docker。
首先Docker不是虚拟机,他是一个基于轻量级虚拟化技术的容器引擎项目。两者的区别首先不应从体量来区分。正确的对比点应该包括实现机制,资源隔离,灵活性。我见过有人拿胶囊公寓和楼房以及别墅形象化的例子,认为这个会让新手产生误解。
1.实现机制:虚拟机提供整个虚拟化硬件层,硬件虚拟化直接将宿主系统的硬件系统虚拟化供虚拟机使用。用过VMware的同学应该都知道虚拟机的第一步就是规划硬件配置。而Docker是利用了LXC(linux容器)技术基于操作系统内核级别的虚拟化,LXC技术包括有namespace cgroup AUFS等。之后章节会详细介绍。
注:docker0.9版本之后逐渐过度到libcontainer,底层实现都抽象化到libcontainer的接口。
2.资源隔离:虚拟机是各个不同的操作系统所以之间是相互隔离的,属于绝对隔离。docker的隔离建立在容器之上所以隔离性还好。
3.灵活性:Docker的灵活性可以从build once,configure once and run anywhere这句话来提炼,正事其优秀的灵活性契合了DevOps。