您的位置:首页 > 运维架构 > Docker

应用交付的变革者Docker

2016-03-14 14:18 549 查看
作者:庞辉富
 
2015年在应用交付领域最火的词非Docker莫属,Docker通过轻量化的容器技术,正逐渐改变着应用的交付方式,使应用持续交付变得越来越容易,正如Docker之父Solomon Hykes所期望,Docker技术将“Upgrade the Internet”。那么,今天听广通软件旗下优云软件架构师庞辉富深入浅出来聊聊这个变革者的前世今生,看看它有什么大招可以放出这样的豪言壮语。
一、 Docker究竟是什么
我们先看看其图标:大船+集装箱,这个图标很清晰的表达了Docker的作用。Docker提供一个个轻量的集装箱(应用容器)帮助开发者将他们开发的应用以及依赖的服务、部件一股脑地打包到一个集装箱里,然后再通过大船(Docker引擎)来装载运输(运行)这些集装箱(一个个完整的应用环境),这艘大船可以在不同的海域(各种运行环境,包括公有云、私有云、PC服务器和笔记本)里航行。



Docker就是这样通过一个个容器将各应用的整个运行环境和配置封装起来,保证应用从开发构建到实际运行的完全一致性,避免因为开发测试和运行环境不一致导致的系统故障。同时通过容器将运行环境隔离起来,运行环境之间互相就不会产生直接影响,就可以避免应用之间产生冲突。
二、Docker是怎么搞出来的
相传Docker之父Solomon Hykes在1999年参加工作,之后的3年主要做系统管理员工作,直到2002年才初步接触编程,但接下来2年又“下海”做了个体户,之后又回到IT行业做2年基础架构工程师和1年的售前工程师。直到2010年才创办了dotCloud公司,做一些不痛不痒的SaaS应用对外提供服务。
虽然dotCloud提供的产品服务可能不咋地,但在开发过程中这位老兄一直在思考:当下应用系统基本上都是分布式的,并与互联网密不可分,软件提供商们期望不管有多少用户、在什么样的设备上,他们的应用都可以随时随地稳定的运行。这就要求应用程序具备足够的弹性、互操作性和易部署性,可以大规模的复制和部署,实现快速扩展。为了实现这个愿望,必须先解决应用程序不再只是运行在一台特定计算机上的问题,这需要将软件逻辑组件和底层基础架构拆分开来,让应用系统独立于基础架构环境,这样当主机发生故障、迁移到其他环境或系统升级时,软件服务总是随处可用。
当时云计算已经初步发展,各大公司基本上都往主机虚拟化方向投入大量的时间和资源,其他机构只能通过一些开源的技术东拼西凑,没有一个统一有效的解决方案,主机虚拟化技术着眼于解决基础架构按需定义和使用的问题,也非常的笨重,没能真正解决应用系统的“一次构建、随处运行”。于是,Solomon们便开始着手解决这些问题,最先考虑的方案便是应用的封装(packaging)和分发(distribution),通过现有的技术来解决应用的隔离性(LXC)和可移动性(AUFS),这样便逐渐有了Docker。
Docker于2013年3月启动,源代码托管在Github,用GO语言开发遵从Apache2.0协议开源,这两年来非常火,国内外有很多实践者,Redhat在RHEL6.5中集成对Docker的支持,Google 的 Compute Engine 也支持Docker的运行。就连Docker的缔造者dotCloud也想沾一沾它的光,于2013年将其名称改为Docker Inc,专注做Docker引擎和生态圈。
所以说无论多屌丝的出身都有可能搞出很高大上的东西,关键是有想法就动手去“搞”。
三、Docker究竟包含什么
在这里我们暂先不说Docker究竟是使用了哪些技术实现的,我们先说说Docker究竟包含什么,它凭什么赢得那么多粉丝。
      Docker采用C/S架构模式,从运行态上看,其包括客户端、后台守护进程和容器。
Ø  客户端,是一个可执行程序,日常与用户交互最多的便是这玩意,它允许我们执行一些管理命令,然后将这些命令发送到后台守护进程;
Ø  后台守护进程,是Docker容器的“大管家”,其接收客户端的指令,并根据指令创建、运行和发布Docker容器;
Ø  容器,是一个运行时环境,就是我们前面说到的集装箱。


     
从静态概念角度看,Docker内部主要包括镜像、镜像库和容器:
Ø  镜像,是一个只读静态模板,和文件夹类似,其包含了应用需要的执行代码、配置和依赖的环境,它采用分层机制实现,正是因为有层的存在才使得程序的升级像搭积木一样容易;
Ø  镜像库,一个专门存放和共享Docker镜像的目录,多个库可以组成一个Docker注册服务器,可公开或私有;
Ø  容器,上面已经说过,它是镜像的一个运行时态,可以把它看作一台小电脑(实际上它运行起来就是一个进程),它不管里面运行的是什么程序,并可以运行在任何主流的操作系统上。



上图可看出Docker几个组件之间的关系,首先在开发机器上构建好容器A,然后将容器A生成镜像A,再推送到Docker镜像库中供正式运行环境搜索并拉取到本地运行,整个过程对于容器内的应用是透明的,以后应用发布时只要发布一个镜像文件就可以了,可以随处运行,这正是Docker的魅力所在。
四、Docker会带来什么变革
Docker容器当前只支持在类Linux操作系统上直接运行,但随着其不断发展,影响力不断增加,微软的Windows Server 2016也将支持Docker容器的直接运行,相信很快Docker便能真正实现应用的“一次构建、随处运行”,最终Docker以及相关容器技术将变革IT应用的交付和运行方式。
1)更快速的应用交付和部署
传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
2)更便捷的升级和扩缩容
随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
3)更简单的系统运维
应用
9712
容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
    4)更高效的计算资源利用
Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。
最近Docker已经发布了1.10版本,在安全、网络支持方面得到进一步的加强,AWS、IBM、微软等大厂商也纷纷加入对Docker的支持,捷运维先行者广通软件旗下的优云团队也正在研发支持Docker技术的应用持续交付平台,助力Docker技术发展,让应用随需交付变为现实。
作者简介:庞辉富,广通软件旗下优云软件架构师,在IT运维管理软件研发里摸爬滚打了十多年,内功深厚,致力于自动化运维解决方案的研究和推广。广通软件十多年来耕耘于运维管理软件研发和服务咨询,面向数据中心、互联网、物联网三个领域提供整合化的运维工具和服务。微信公众号:broada_ops
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  广通软件 docker