Docker介绍

在有限的公司内部资源环境下,在一台服务器上同时运行一百个虚拟机,肯定会被认为不现 实。而在一台服务器上同时运行一千个Docker容器,这已经成为现实。在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实。敏捷开发是一套 软件工程方法论,其中有一个重要的概念是DevOps(Development和Operations的组合)是一组过、方法与系统的统称,用于促进开发 (应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到,为了按时交付软件产品和服 务,开发和运营工作必须紧密合作。DevOps的核心理念在于生产团队(研发、运维、QA)之间的高效沟通协作,以解决以下常见问题: 更小、更频繁的需求变更。 生产环境不受开发人员限制。 业务应用程序成为中心,而不是基础设施。 定义简介明了的研发、测试部署流程需要更多成本与时间。 研发、测试部署流程无法彻底自动化。 现有的PaaS虚拟机难以促成开发与运营的协作。 使用Docker可以满足以下几点: 完整地封装系统:包括OS系统,Lib环境,App应用,完整的三层封装。 自由地定制系统:包括以上三层的灵活又彻底的自定义。 方便地发布系统:包括部署管理,自动化部署。 什么是Docker

Docker是基于Go语言实现的云开源项目,诞生于2013年初。目前已经加入 Linux基金会,遵循Apache2.0协议,项目代码在GitHub上进行维护,自从开源后受到广泛关注,现在主流Linux操作系统都已经支持 Docker。如:Redhat RHEL 6.5/Centos 6.5以上的操作系统注意CentOS内核必须在2.6以上,通常安装Centos7.0以上版本可完美支持,还有Ubuntu14.04,Google 也在其 PaaS 产品中广泛应用。微软也与Dokcer公司合作,以加强云平台Azure对Docker的支持。公有云亚马逊也推出了AWS EC2 Container对Docker的支持。Docker主要目标是“Build,Ship and Run Any App,Anywhere”即通过对应于组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行 (Runtime)等生命周期的管理,达到应于组件级别的“一次封装,到处运行”。应于组件可以是一个Web应于,也可以是一套数据库服务,甚至是一个操 作系统或编译器。

开发、测试和发布中应用Docker 由于Docker具有易于部署,跨平台能力强的特性,所以Docker非常适合做自动 化的持续集成,和快速部署,直接使用Docker建设产品的发布流程,不仅可以方便地管理迭代与集成,还可以直接以Docker化的方式发布产品,它特别 适用于BS架构的产品,由于BS产品的服务器端的部署往往受到各种不定因素(系统版本、依赖关系)的影响,所以其部署流程的用户体验往往非常繁琐容易产生 错误,需要使用者解决各种环境部署环境中的问题。 传统模式中,开发团队在开发环境中完成软件开发,自己做了一遍单元测试,测试通过,提 交到代码版本管理库,运维打包构建到测试环境进行测试。测试没有问题后,通知部署人员发布到UAT,然后再到生产环境,上述过程中涉及到至少4个环境,或 者几个项目并行开发,需要更多套测试环境,环境不一致导致各种问题反复出现,已经不适应如今的快速开发和部署。在Docker应用模式中,是以容器的形式 存在,所有和改应用相关的依赖都会在容器中,因此移植非常方便,不会再像传统模式那样的环境不一致。如下图:比较了两种模式下的不同流程。

容器的定义

Docker引擎的技术是Linux容器(Linux Containers,LXC)技术。IBM DeveloperWorks上给出了关于容器技术的准确描述:容器是有效地将由单个操作系统管理的次元划分到孤立的组中,以便更好地在孤立的组之间平衡 有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此 外,也避免了虚拟化(paravirtualization)和系统调用替换中的复杂性。 Docker容器虚拟化的好处

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。 具体说来,Docker 在如下几个方面具有较大的优势: 更快速的交付和部署。对开发和运维(devop)人员来说,最希望的就是一次创建或 配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。 更高效的虚拟化。Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。 更轻松的迁移和扩展。Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。 更简单的管理。使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。 举例LAMP组合来运维一个网站。按照传统的做法,首先,需要安装Linux、 Apache、Mysql、PHP以及它们各自运行所依赖的环境,之后分别对它们进行配置(包括创建适合的用户、配置参数等)经过大量的操作后,还需要进 行功能测试,看是否工作正常,如果不正常,则意味着更多的时间代价和不可控的风险。如果再加上更多的应用,事情会变得更加难以处理。更困难的是,一旦需要 服务器迁移从阿里云到腾讯云,往往需要重新部署和调试。这些琐碎而无趣的体力活,极大地降低了工作效率。而Docker提供了一种更为快捷的方式,通过容 器来打包应用,迁移只需要再新的服务器上启动需要的容器,这将节约大量的宝贵时间,并降低部署过程出现问题的风险。 Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势: 容器更快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。 容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。 通过类似Git的操作来方便用户获取、分发和更新新应用镜像,指令简明,学习成本较低。 通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。 特性 容器 虚拟机 启动速度 秒级 分钟级 硬盘应用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单击支持上千个容器 一般十几个 隔离性 安全隔离 完全隔离 Docker的三大核心概念 镜像(Image):类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。 容器(Container):类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。 仓库(Repository):类似于代码仓库,是Docker集中存放镜像文件的场所。最大的公开仓库是Docker Hub,国内公开仓库是DockerPool。 Docker学习地址

转载于:https://my.oschina.net/jimmylee216/blog/827109

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值