• 为什么要使用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
    运行密度 单机支持上千个容器 一般几十个
    隔离性 安全隔离 安全隔离
    迁移性 优秀 一般
  • 相关阅读:
    基于vue-cli配置移动端自适应项目
    webpack 之 resolve.alias(别名)
    vue 之引用全局样式
    webpack 3.0
    vue 之 data为什么必须声明为返回一个初始数据对象的函数?
    JS柯里化
    《css设计指南》 读书笔记 二
    《css设计指南》 读书笔记 一
    简单的移动端图片预览 包含放大缩小以及对各种手势的判定
    图片拍照上传 使用fileReader 无需跨域
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/8025857.html
Copyright © 2020-2023  润新知