doker
把各个开发程序及需要的依赖和linux函数库打包的技术
通过沙箱机制隔离各个程序应用,应用之间是不可见的,解决了依赖混乱的问题
linux各版本系统的架构,
系统应用层→linux内核→计算机硬件层
linux内核就是各种操作计算机硬件的指令,但指令太多不便于操作,于是就把指令封装成一个个函数,再把这些函数集合起来成为一个函数库,上边讲到的函数库就是系统应用,如乌班图,红帽等linux操作系统,其实都是基于linux的内核做的指令集合封装成函数的系统,不过不同linux系统对内核中的指令封装有所不同,比如函数名称,功能侧重点等
而doker直接把函数库和程序包和程序需要的依赖全部打成一个包,通过函数库调用linux内核,再通过内核调用计算机硬件,实现了一次打包,不同linux系统中运行的效果,直接通过docker中的函数库去调用linux内核,就不用管系统应用层面的交互了
再说说docker和虚拟机的差别
docker 程序应用直接调用函数库, 函数库直接与linux内核打交道,内核又去调用计算机硬件
虚拟机 从下到上
最底层的硬件,再上层windows系统,再上层的hypervisor,hypervisor模拟了一个硬件环境(包括cpu等硬件),再在该模拟的硬件环境上装操作系统,再在操作系统上装程序,
调用顺序如下:
程序调用操作系统,操作系统调用模拟的硬件,模拟硬件再调用windows系统,windows系统再去调用真正的计算机硬件
docker和虚拟机比较
docker以大小M为单位,直接调用linux内核,启动快以秒为单位,又小速度又快
虚拟机以G为单位,从上到下层层调用,启动以分钟为单位又大速度又慢