为什么要使用Docker

你需要了解的知识点:

(1)docker所能提供的最大优势:快速分发和部署

(2)传统服务搭建模式的弊端:直接运行在底层操作系统,不同环境下无法保证应用的行为一致

(3)Docker的工作机制:通过容器打包机制,解耦应用和平台

(4)Docker在开发和运维中的优势:快速交付和部署、节约资源、易于迁移和扩展、便于管理

(5)Docker和虚拟机的比较

 

一、Docker容器虚拟化的好处

Docker项目的发起人和Docker公司CTOSolomon Hykes曾认为,Dockers在正确的地点、正确的时间顺应了正确的趋势——如何正确地构建应用。

 

在云时代,开发者创建地应用必须要能很方便地在网上传播,也就是说必须脱离底层硬件地限制;同时必须是“任何时间、任何地点”可获取的。

因此,开发者需要一种新型地创建分布式应用程序地方式,快速分发和部署,这正是Docker所能够提供的最大优势

 

举个简单的例子,假设用户试图基于最常见的LAMP(Linux+Apache+Mysql+PHP)组合来构建一个网站。

按照传统的做法,首先,需要安装Apache、Mysql和php以及它们各自运行所依赖的环境;

之后分别对它们进行配置(包括创建合适的用户、参数配置等);

经过大量的操作后还需要进行功能测试,看是否工作正常;

如果不正常,则进行调试追踪,意味着更多的时间代价和不可控的风险。

可以想象,如果应用数目变多,事情会变得更加难以处理。

更可怕的是,一旦需要服务器迁移,往往需要对每个应用都进行重新部署和调试。

这些琐碎而无趣的“体力活”,极大的降低了工作效率,究其根源,是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致

 

而Docker提供了一份更为聪明的方式,通过容器来打包应用,解耦应用和运行平台。(Docker的工作机制)

意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以,无论新旧服务器是否是同一类型的平台。

这无疑将节约大量的宝贵时间,并降低部署过程中出现问题的风险。

 

 

二、Docker在开发和运维中的优势

对开发和运维人员(DevOps)来说,可能最梦寐以求的效果就是一次创建或配置,之后可以在任何地方、任何时间让应用正常运行。

而Dock恰恰是可以实现这一终极目标的“瑞士军刀”,具体来说,Docker在开发和运维过程中来说,具有如下几个方面的优势:

(1)更快的交付和部署:使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;

  开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。

  只要开发测试过的代码,就可以确保在生产环境无缝运行。

  Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。

  并且,整个过程可见,使团队更容易理解应用的创建和工作过程。

 

(2)更高效的资源利用:Docker程序运行不需要额外的虚拟化管理程序只吃,它是内核级的虚拟化,

  可以实现更高的性能,同时对资源的需求很低。跟传统虚拟机相比,要提高一到两个数量级。

 

3)更轻松的迁移和扩展:Docker容器机会可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,

  同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同的平台之间轻松的迁移应用。

 

4)更简单的更新管理:使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。

  并且所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。

 

 

三、Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上与传统的虚拟机方式相比,具有明显的优势:

(1)Docker容器很快,启动和停止可以在秒级实现,而传统的虚拟机方式需要数分钟。

(2)Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。

(3)Docker通过类似Git设计理念的来方便用户获取、分发和更新应用镜像,存储复用,增量更新。

(4)Docker通过Dockerfile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。

 

Docker容器除了运行其中应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。

传统虚拟机方式运行N个不同的应用就要起N个虚拟机(每个虚拟机需要单独分配独立的内存、磁盘等资源),

而Docker只需要启动N和隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。

 

当然,在隔离性方面,传统虚拟机方式提供的是相对封闭的隔离。但这并不意味着Docker就不安全,

Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,并且整合众多安全工具。

从1.3版本开始,Docker重点改善了容器的安全控制和镜像安全机制,极大提高了使用Docker的安全性。

 

Docker容器技术和传统虚拟机技术的特性比较
特  性 容器 虚  拟  机
启动速度 秒级 分钟级
性能 接近原生 较弱
内存代价 很小 较多
硬盘使用 一般为MB 一般为GB
运行密度 单机支持上千个容器 一般几十个
隔离性 安全隔离 安全隔离
迁移性 优秀 一般

 

posted @ 2017-12-12 01:57  明王不动心  阅读(1121)  评论(0编辑  收藏  举报