一个虚拟机的正常运行,需要运行自己的一系列系统进程,只是这些系统进程就耗费了大量资源。容器和虚拟机相比较就显得轻量的多,它允许在相同配置的硬件基础上运行更多数量的应用。虽然容器本身也有消耗,但是和虚拟机系统的消耗比起来要小的多。
虚拟机是利用软件技术将物理硬件虚拟化为多个虚拟硬件资源,从而被每个虚拟机的操作系统使用。虚拟机里的进程会进行虚拟机的系统调用,虚拟机的指令会通过软件技术变为宿主机上真正的cpu指令,而容器中的进程执行的指令不需要任何的虚拟化过程,直接会被cpu执行,所以单纯在执行指令的过程中,虚拟机要比容器的执行过程要长,资源耗费要多。
docker介绍Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker容器平台的出现把linxu容器化技术推向了一个高潮,它不仅简化了程序部署的方式,更简化了打包应用和依赖,使容器真正做到了在不同的操作系统之间移植,甚至一个完整的操作系统也可以被打包成一个可移植的镜像。
运行docker包的前提是,目标机器一定要运行docker。
当你的应用被打包成docker镜像之后,无论在什么操作系统中运行,它都能看见相同的文件,相同的依赖库,因为这些依赖库已经被一起打包到了docker镜像中,即使目标机器上安装了正确的版本的依赖库,它也会只用镜像中的依赖库,这就是程序员期盼的无论何时何地的环境一致性呀