黑马程序员技术交流社区

标题: 【上海校区】Docker的认知 [打印本页]

作者: 陈泽    时间: 2019-5-22 15:39
标题: 【上海校区】Docker的认知
本帖最后由 陈泽 于 2019-5-22 16:40 编辑

什么是容器?
    1.容器技术是一种虚拟化的方案;
    2.与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上;  
    3.容器则是直接运行于操作系统内核之上的用户空间,因此容器虚拟机化也被称之为操作系统级别的虚拟化;
    4.由于依赖于操作系统的特性,所以容器只能运行于底层操作系统相同或相似的操作系统;
    5.docker使用的容器技术,依赖于Linux内核特性:Namespace和Cgroups(Control group);docker只能运行 Linux系统,而不能运行windows系统;这也是docker运行系统上的劣势


Linux 容器技术 vs 虚拟机
    从图中可以看到,一个显而易见优点,磁盘占用空间更少,使用虚拟机部署应用,不但包含了应用和其依赖的库,还需要包含完整的操作系统,原本只需要几十兆的应用,却需要几个G的操作系统来支撑;
    我们再看容器的那张图,只需要包含应用和他依赖的库,这样资源占用就大大减少;另外虚拟机需要模拟硬件的行为,对内存和cpu的损耗也是相当大;所以,同样配置的服务器,使用容器技术要比使用虚拟机技术能够提供更多的服务能力,服务更多的用户


    容器有这么多的优点,为什么直到docker的出现,才真正被大家关注起来了呢?
          一个重要的原因:容器技术的复杂性,容器本身就比较复杂,依赖于linux内核的很多特性,而且它不易安装,也不易管理和实现自动化,docker就是为了改变这一切而出现的
什么是Docker?
   docker是一个能够把开发的应用程序自动部署到容器的开源引擎 ,使用Go语言编写,2013年初,被dotCloud(也就是docker公司)发布,基于Apache2.0开源授权协议发行
    docker有什么特别之处吗
    docker在虚拟化的容器执行环境中,增加了一个应用程序部署引擎,该引擎的目的就是提供一个轻量快速的环境,能够运行开发者程序,能够快速的从开发环境部署到测试环境再到生产环境


docker的优点    1.提供简单轻量的建模方式
      docker非常容易上手,用户只需几分钟就可以把自己的程序docker化,大多数的程序只需不到1秒就可以运行起来,由于去除了管理程序的开销,docker程序拥有非常高的性能,同时同一台宿主机中也可以运行更多的容器,使用户可以尽可以的利用系统资源

    2.职责的逻辑分离
      使用docker,开发人员只需要关心容器中运行的docker程序,而运维人员需要去关心如何管理容器;docker设计的目的,就是要加强开发人员写代码和开发环境与应用程序部署到生产环境的一致性

    3.快速高效的开发生命周期
      缩短从开发到测试再到部署上线运行的周期,让你的应用程序具有可移植性;在容器中开发,以容器的形式交付和分发,这样开发测试生产都使用相同的环境,就避免额外的调式和部署上的开销,可以缩短产品的上线周期

    4 . 鼓励使用面向服务的架构
      docker推荐单个容器,只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或服务都可以表示为一系列的内部互联的容器,从而使分布式应用程序和调式应用程序都变得相对简单,就像我们开发中常用的思想,高内聚低耦合,单一任务,这样就能够避免同一服务器上部署不同服务时,可能带来的服务之间的互相影响,这样出现问题也能很快的定位问题的所在


Docker的使用场景
1.使用Docker容器开发、测试、部署服务
2.创建隔离的运行环境
3.搭建测试环境
4.构建多用户的平台即服务(PaaS)基础设施
5.提供软件即服务(SaaS)应用程序
6.高性能、超大规模的宿主机部署









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2