Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更加简便。用户操作Docker容器就像操作一个轻速轻量级的虚拟机一样简单。docker与虚拟机的区别如下:
在虚拟机中,有一个"Hypervisor"层,这是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统。
个人理解:在虚拟机中,如果想做到两个应用程序隔离,将两个应用安装在同一个虚拟机中是不符合要求的,所以这两个应用必须安装在两台不同的虚拟机中,这样的话就需要虚拟出两台虚拟机,每台虚拟机占用一定的物理硬件资源,无法共享系统的资源,所以开销比较大,而且移植性不好;而docker不同,Docker分成若干个容器,每一个容器运行一个应用,这些应用共享系统内核,只需要一个Docker Engine就好了,在docker容器中包含了应用运行所需要的环境和依赖,容器具有很好的移植性。