Docker是什么
Docker是一款开源轻量级的容器引擎,让开发者可以轻松将自己的项目部署到一个容器中,发送给其他人使用。
为什么需要Docker,普通部署方式不可行吗?
可行,但在程序员之间常年流传着这样一句话:”在我机器上能跑“,是表达了对这段代码的肯定,更是表达了对这段代码的不确定,不确定其是否在其他机器其他环境下依然能完好如初。
一个复杂的项目往往很难如人意,尽管各大语言基本都有控制项目环境的工具,尽量保证运行环境的一致性(例如java的maven,gradle,python的requirements.txt),但是编译环境和系统环境又如何保证?很多时候开发者要花费大量时间去确保程序在不同环境上的兼容性,使用者要费时费力按照使用说明配置运行环境。有了docker,开发者可以将程序连带着编译环境,系统环境全部打包到容器中,以镜像的方式传输给使用者,几乎可以保证不管在谁的机器上,程序的运行环境始终如一。开发者一心放在开发,不用再担心环境问题,使用者也不用再手动安装十几个依赖,浏览器的几十个tab只为解决一个依赖安装失败的问题。
Docker的原理
在一台机器上虚拟不同环境,听起来与虚拟机很相似,但其实不然。
图片左侧为虚拟机架构,有一层GuestOS包含一个完整的操作系统,由Hypervisor虚拟化硬件资源,运行在了一个完全隔离的环境中的独立计算机系统。这是一个相对彻底的虚拟。也正是因为提供了物理层面与其他操作系统的隔离,消耗了很多资源,对性能影响较大。
而docker之所以被称为一个轻量级的容器,是因为其不是一个单独的操作系统,而是直接使用主机的硬件资源,因此容器的资源利用率和直接使用Host OS的硬件资源相差无几。
这是IBM对计算能力做的一个测试对比,硬件使用两个16核的CPU,总共32核&#