why docker ?


前言:之前一直听说docker,心里对docker的学习很是向往,通过学习,在这里对大家分享下感受,不足之处,多指教!


1.什么是docker

           问题:开发与测试之间存在矛盾:1.从开发环境中将程序移植到测试环境很费时费力且容易出现错误;2.二者之间存在不一致性,测试版本和开发版本不对应,暴露出意外的问题。那么如何解决呢?没错就是 docker。

           说到docker就得先提一下虚拟化技术了,docker是从虚拟化技术中取精去糟的,理解好了虚拟化技术后再来理解docker就相对简单多了。

           我们日常接触的虚拟化技术最多的就是虚拟机,使用虚拟机的同学都知道,虚拟机相当于你另一个电脑,你可以在这个电脑中进行任何操作而不用担心影响到你原本的电脑,专业点就是你的电脑上装了两个操作系统,并且彼此之间没有任何联系,

           docker沿用了部分虚拟技术,进行了进一步封装,使用类似虚拟机的机制将我们做好的服务或发布的程序封装,极大的提高它的移植性,让它可以在不同的操作系统中运行,而不需要再去考虑硬件配置或操作系统是否和开发时一致;例如在当前操作系统中一个部署网站,将依赖包和项目文件整体打包,然后直接将它移植到其他的服务器上,则该网站可以正常运行;这项技术的体现就似docker;


2.docker优势

        1. 更快速的交付和部署:
               在我们部署网站或重复异地部署时经常会碰到数据量大、繁琐的问题,如果你部署的应用还是需要大量的依赖包和数据支持时那你就不得不将这些东西一个不拉的复制到新的运行环境中,这个过程繁琐且容易出错,docker就很出色的解决了这个问题,它使用容器打包应用,既将你项目用到的所有依赖项都打包在这个容器中。使用docker部署了开发环境后,你的开发和修改都在这个容器中进行,这样需要迁移时只要将这个容器在新的服务器上打开就好,极大的提高了应用的隔离性和移植性;
        2. 更高效的虚拟化:
        3. 更高的可移植性:
                Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 利用这种兼容性让用户可以在不同平台之间轻松地迁移应用。
        4. 更简单的管理:
                使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式进行分发和更新,从而实现自动化并且高效的容器管理。


3.docker和传统的vm对比

               通过两张图对比下传统的vm 和docker;

                                                          

                                                             

                                                                                   

                         更加高效:

                         传统的虚拟机是通过Hypervisor实现物理层次的物理硬件共享;

                       (Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。)

             

                         docker 通过docker engine直接跳过了 过去,从架构来看,Docker比虚拟化少了两层,取消了hypervisor层和GuestOS层,使用 Docker Engine 进行调度和隔离,所有应用共用主机操作系统,因此在体量上,Docker较虚拟机更轻量级,在性能上优于虚拟化,接近裸机性能。

                            

                  



4.补充

                  docker更加专业化的解释是 应用容器,个人理解是,开发者将所有的开发工作都进行在docker容器中,这样开发环境就是测试环境,提高了移植性,减少了很多不必要的工作;

                  docker是对进程的虚拟,而传统的虚拟机是对物理层次的虚拟,两者存在本质上的区别;

                  新手,多指教,共同进步!

   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 38
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值