• docker概述


    docker概述

    Docker为什么会出现?

    环境不同所引发的问题

    一款产品从开发到上线,一般都会有开发环境,测试环境,运行环境。

    如果有一个环境中某个软件或者依赖版本不同了,可能产品就会出现一些错误,甚至无法运行。比如开发人员在windows系统,但是最终要把项目部署到linux。如果存在不支持跨平台的软件,那项目肯定也无法部署成功。

    这就产生了开发和运维人员之间的矛盾。开发人员在开发环境将代码跑通,但是到了上线的时候就崩了。还要重新检查操作系统,软件,依赖等版本,这大大降低了效率。造成了搭环境一两天,部署项目两分钟的事件。

    配置的繁琐

    如果一个产品需要使用mysql集群,redis集群,Haddop集群,或者elasticsearch集群等等,不同的人都要用到这些,那每一个人都要对集群进行配置,如果有一个位置不同就有可能产生重大问题。况且配环境是一个极其繁琐,很需要耐心和细心的。回想一下自己刚学编程的时候,配置环境变量是不是都有可能耗费很长时间,这些集群就更不用说了。

    Docker的出现解决了什么问题?

    程序包和环境一起打包

    那能不能把环境也拷贝过来呢?docker给了我们答案。

    开发人员把环境配置好,将需要运行的程序包运行成功,然后把程序包和环境一起打包给运维人员,让运维人员部署就可以了。这大大提高了项目上线的效率。

    如果需要配置集群,只需要一人配置好,然后打包发给大家就可以了。

    Docker隔离机制

    docker通过隔离机制,,可以将服务器利用到极致!

    Docker的历史

    Docker是dotCloud公司开源的一款产品。dotCloud公司是2010年新成立的一家公司,主要基于PaaS(Platform as a Service,平台及服务)平台为开发者提供服务。在PaaS平台下,所有的服务环境已经预先配置好了,开发者只需要选择服务类型、上传代码就可以对外服务,不需要花费大量的时间搭建服务和配置环境。dotCloud的PaaS平台已经做得足够好了,它支持几乎所有主流的Web编程语言和数据库,可以让开发者随心所欲地选择自己需要的编程语言、数据库和编程框架,而且它的设置非常简单,每次编码后只需要运行一次命令就可以把整个网站部署上去;并且利用多层次平台的概念,理论上,它的应用可以在各种类型的云服务商。两三年下来,虽然DotCloud也在业界活的不错的口碑,但由于整个PaaS市场还处于培育阶段,dotCloud公司表现得不温不火,没有出现爆发式的增长。

    2013年,dotCloud的CEO Solomon Hykes决定把dotCloud内部使用的Container容器技术单独拿出来开源,2013年3月发布Docker的V0.1版本,并且基本保持每月一个版本的迭代速度,到了8月,Docker已经足够火爆,并广受好评,各种各样的技术论坛和技术峰会都开始热烈讨论与推荐Docker,这时Docker才只发布到V0.6版本。

    随着Docker的流程,越来越多的优秀开发者加入Docker社区参加开发。这里值得一提的是,Docker是基于Linux3.8以上内核,在aufs分层文件系统下构建的,主要运行在Ubuntu的系统下。REHL/Centos当时最新版6系列还是基于Linux2.6.23内核,无法运行Docker。REHL/Centos尽快支持Docker,RedHat公司的工程师亲自出马,加班加点为Docker贡献代码,新增对devicemapper的支持来时间文件系统分层,终于顺利地让Docker在REHL/Centos运行起来。

    随着Docker在业界的知名度越来越高,到了2013年10月,dotCloud公司索性更名为Docker股份有限公司,工作的重心也从PaaS平台业务转向全国全面围绕Docker来开发,到了2014年1月,Docker公司宣布完成15000万美元的融资,雅虎联合创始人杨致远也参与跟投。

    虽然Docker迟迟没有发布1.0版本,但好多公司已纷纷把Docker应用到生产环境,其中美国奢侈品电商Gilt的CTO说:“使用Docker后,突然发现,传统方式中的各种问题都消失了,我们接下来要考虑如何进一步提高软件生产效率,让软件开发更加安全和创新。这种转变太不可思议了”。

    千呼万唤,到了2014年6月9日,Docker终于发布了V1.0版本,并举办了DockerCon2014大会,大会上来自goole、ibm、Redhat、rackspace等公司的核心人物均发表了主题演讲,纷纷表示支持并加入Docker的阵营。Docker的CTO Solomon Hykes充满雄心壮志的说:“我们能把互联网升级到下一代”,Google的基础架构部副总裁Eric Brewer也附和道:“容器技术曾是Google的基础,我们和Docke联手,把容器技术打造为所有云应用的基石”。

    Google自2004年就开始使用容器技术,目前他们每周要启动超过20亿个容器,每秒钟新启动的容器都超过3000个,在容器技术方面有大量的积累。曾相继开源了Cgroup和Imctfy先进之处融入Docker中,还把自己的容器管理系统(kubernetes)也开源出来。

    2014年8月,不缺钱的Docker再次融资,融资超过4千万美元,估值达到4亿美元。所有的云计算大公司,如Azure、Google和亚马逊等都在支持Docker技术,这实际上也让Docker成为云计算领域的一大重要组成部分。

    2014年10月15日,Azure副总裁Jason Zander宣布微软与Docker的合作伙伴关系;2014年11月5日,Google发布支持Docker的产品DockerGoogle Container Engine;

    2014年11月13日,Amazon发布支持Docker的产品AWS Container Service。至此,几个重要的云计算大公司都已经支持Docker技术,这不仅让Docker成为云计算领域的一个重要级成员,也让Docker成为云应用部署的事实上的标准。

    2014年12月,Docker发布了Docker集群管理工具Machine和Swarm,标志着Docker开始突破一个标准的容器框架,打造属于Docker自己的集群平台和生态圈。

    2015年4月,Docker公司宣布完成了9500万美元的D轮融资。

    2015年10月,Docker收购Tutum,Tutum本身已经实现对亚马逊网络服务(AWS)、Digital Ocean、微软的Azure等主流云服务商的良好支持。

    2016年1月,Docker官方计划全面支持自身的Apline Linux,使用它构建的基础镜像最小只有5M。

    Docker能做什么?

    之前的虚拟机技术

    在这里插入图片描述
    虚拟机技术缺点:

    1. 资源占用十分多
    2. 冗余步骤多
    3. 启动很慢

    容器化技术

    容器化技术不是模拟一个完整的操作系统
    在这里插入图片描述
    比较Docker和虚拟机技术的不同:

    1. 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后再这个系统上安装和运行软件
    2. Docker容器内的应用直接运行在宿主机上,容器是没有自己的内核的,也没有虚拟化我们的硬件,所以就轻便了
    3. 每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响

    DevOps(开发、运维)

    应用更快速的交付和部署

    传统:一堆帮助文档,安装程序
    Docker:打包镜像发布测试,一键运行

    更便捷的升级和扩缩容

    使用了Docker之后,我们部署应用就和搭积木一样!
    项目打包为一个镜像,更好扩展

    更简单的系统运维

    在容器化之后,我们的开发,测试环境都是高度一致的

    更高效的计算资源利用

    Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例

  • 相关阅读:
    python爬虫,多线程与生产者消费者模式
    基于python+TensorFlow+Django卷积网络算法+深度学习模型+蔬菜识别系统
    【无锁队列】无锁CAS_无锁队列
    使用eolink优雅地进行API接口管理
    计算机网络——如何构造HTTP请求
    学生老师管理系统
    前端周刊第三十四期
    GB28181学习(十)——视音频文件下载
    YOLO目标检测——卫星遥感多类别检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
    创新视频剪辑:轻松实现批量垂直翻转,提高视频品质与吸引力
  • 原文地址:https://blog.csdn.net/m0_67390788/article/details/126327603