前面说到了Docker的概述,这一篇文章接着说Docker有什么优点,Docker与虚拟机相比有哪些优势。

Dcoker作为一种新的虚拟化技术,与传统的虚拟化方式有着众多的优势

更高效的利用系统资源

由于容器的运行不需要进行硬件虚拟化以及完整的操作系统等额外开销,Docker对系统资源的利用率更高。无论是启动速度、内存损耗、文件存储速度等,都要比传统的虚拟机更加高效。

因此相对于传统的虚拟化技术,一个相同配置的主机,往往可以运行更多数量的应用。


更快速的启动时间

传统的虚拟化技术的启动时间往往需要几分钟,而Docker的容器应用,直接运行于宿主机内核,无序启动完整的操作系统,因此可以做到秒级启动,大大节约了开发,测试和部署的时间。


一致的运行环境

开发过程中常常出现“这段代码在我的机器上运行没有问题呀”的情况。由于开发环境、测试环境、生产环境不一致,同一段代码可能在不同的机器上会有不同的表现,导致有些bug不会在开发和测试环境上并没有发现。而Docker的镜像提供了除了内核外完整的运行环境,确保了应用环境的一致性。


持续的交互与部署

对于开发和运维人员来说,追星汪的就是一次创建或配置,可以在任意地方正常运行。

使用Docker可以用过定制应用镜像来实现持续的集成、交付、部署。开发人员可以通过Dockerfile来进行镜像构建,运维人员就尅直接在生产环境中快速的部署该镜像或者结合其他工具实现自动化部署。

运用Dockerfile可以使构建镜像透明化,不仅开发团队可以理解应用的运行环境,而且运维人员也可以理解运行需要的条件,有利于更好的在生产环境中部署该镜像。


更轻松的迁移

由于Docker保证了运行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台(物理机、虚拟机、公有云、私有云)上运行,其运行结果都是一致的。因此用户可以很轻松的将原本运行在一个平台上的应用转移到另一个平台,而不用担心因为环境变化导致的无法正常运行的情况。


更轻松的维护和扩展

Docker使用分成存储的技术,使得应用重复部分可以复用,使得应用的维护更新更加简单(PS:可以注意到,当在二次构建某个镜像的时候,有一个"use cache",这就是复用的体现),基于该镜像的二次扩展也更加简单。

此外,Docker官方提供了Docker Hub,和其他优秀的开源团队共同维护了一批高质量的镜像,既可以在生产环境直接使用,也可以作为基础进行深度定制,大大降低了应用镜像的制作成本。

如果需要,也可以自行维护一个私有的镜像仓库,将自己的应用放在上面进行维护。


和虚拟机的对比


特性Docker容器虚拟机
启动秒级分钟级
硬盘使用MB级GB级
性能接近原生(因为直接运行在宿主机上,本身并不维护内核)低于原生
系统支持量单机支持上千容器一般几十个