免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 30099 | 回复: 3
打印 上一主题 下一主题

应用交付的变革者Docker [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-06-10 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-06-06 13:38 |只看该作者 |倒序浏览
本帖最后由 优云敏捷运维 于 2016-06-06 14:32 编辑

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)更简单的系统运维
应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。

4)更高效的计算资源利用
Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。
最近Docker已经发布了1.10版本,在安全、网络支持方面得到进一步的加强,AWS、IBM、微软等大厂商也纷纷加入对Docker的支持,捷运维先行者广通软件旗下的优云团队也正在研发支持Docker技术的应用持续交付平台,助力Docker技术发展,让应用随需交付变为现实。

作者简介:庞辉富,广通软件旗下优云软件架构师,在IT运维管理软件研发里摸爬滚打了十多年,内功深厚,致力于自动化运维解决方案的研究和推广。

从监控、到应用体验,到自动化持续交付,优云一切为了您做的更好!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-08 06:20:00
2 [报告]
发表于 2016-06-06 22:03 |只看该作者
不支持unix吗?

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-06-10 06:20:00
3 [报告]
发表于 2016-06-07 10:43 |只看该作者
回复 2# 残愚

缺点之一:
    Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-08 06:20:00
4 [报告]
发表于 2016-06-07 19:18 |只看该作者
回复 3# 优云敏捷运维
不支持32位Unix,那64位Unix呢?


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP