1. 什么是虚拟化
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的 各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实 体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这 些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的 虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的 旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资 源充分利用
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化 (vip)、桌面虚拟化、服务虚拟化、虚拟机等等。
2. 什么是Docker
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业 余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵 从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品 中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理, 使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简 单。
3. 为什么选择docker
- 上手快。
用户只需要几分钟,就可以把自己的程序“Docker化”。Docker依赖于“写时复 制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码 即改”的境界。
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即 可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机 中也可以运行更多的容器,使用户尽可能的充分利用系统资源。
- 职责的逻辑分类
使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心 如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要 部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境 都是正常的,上线后出了问题就归结为肯定是运维的问题)”
-
快速高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应 用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子, 里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒 子中一件件的取。) -
鼓励使用面向服务的架构
Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个 应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序 或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调 试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中 运行多个应用程序)
5. 容器与虚拟机比较
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层 面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
网友评论