微信号:hsares

介绍:恒生研发中心是恒生电子的核心技术部门,致力于前沿科技创新研究和复用。目前,已形成完善的ARES平台体系,提供技术平台、产品平台、基础产品和金融云等全面的技术解决方案

恒生柳正龙:带你零基础入门Docker

2016-11-18 11:46 柳正龙
信息化企业从出现到如今的遍地可见,其优势不言而喻,但如同人的成长步入中年,信息化企业已经开始变得日益臃肿。解决企业信息化管理的容器技术亟待创新之时,Docker应运而生。这项技术有何闪耀之处?未来又将走向何方?请看下文。

在10月份阿里云举行的云栖大会上,阿里云与Docker公司宣布达成战略合作,阿里云将成为Docker官方支持的云服务提供商,双方将在开源容器技术以及发展方向上共同努力,为中国用户提供本地化的Docker服务。在Docker容器技术面临落地企业的关键时期, 双方的合作,不仅证明了企业在选择容器技术方向上的正确性,还为容器生态快速发展起到了巨大的推动作用,进一步坚定了企业应用容器技术的决心。

【Docker出现:容器技术迎来破冰】

在Docker之前,容器技术已经发展了近30多年,一直处于不温不火的状态,主要原因在于容器技术非常复杂,难以理解,只有领域内的专家才能驾驭。比如科技巨头Google已经使用容器技术将近10年,公司内部用来管理多个数据中心、数十万台机器和数以亿计应用部署任务的Borg系统,底层使用的就是容器技术。Linux内核中容器关键技术Cgroup就是由Google贡献的。虽然巨头们容器技术的使用已经渐入佳境,但是中小企业却无福享受。

Docker公司的前身是dotCloud,拥有先进的容器管理核心技术,专门提供基于PaaS平台的技术服务,但是在PaaS领域存在诸多重量级玩家,公司经营屡受挫折,最终做出了将公司核心技术开源的决定,取名为Docker。Docker一经开源,就立刻引来了业界的追捧。首先Docker大大降低了容器技术的使用门槛,使普通IT人员也能体验到容器技术的强大和轻便,这为Docker树立了良好的口碑,也加速了Docker技术的传播;另外Docker容器技术的出现,为缺乏活力的云计算领域注入了新的血液,传统云计算巨头纷纷表示要支持Docker,包括微软也表示Windows要原生支持Docker容器技术,另外国内外还出现了一大批基于Docker的新兴创业公司。显然,相比当前日益笨重的IT环境,Docker的出现,让IT公司和从业人员都无比惊喜。

【Docker容器技术发展现状】

Docker容器技术经过3年多的发展,已经逐渐解决了网络、存储、监控和调度等关键问题。其中用户关注最多的是网络方面,物理网络通信主要依赖网卡、交换机、路由器等硬件设备来实现。在云计算时代,虚拟化大行其道,容器和虚拟机一样,都是借助于大量虚拟设备来实现网络通信,不同的是容器的创建和销毁更频繁,对网络的需求量更大。

Docker容器目前支持Host网络、bridge网络、overlay网络以及自定义网络等,能应对各种不同的网络需求。比如当应用很在乎通信性能,或者应用使用了组播等特殊的网络协议时,可以选择Host网络。在这种网络模式下,容器和主机拥有同样的IP地址和网络协议栈,网络性能和兼容性都很好;而当应用需要独立IP且需要跨主机容器通信时,可以选择利用bridge+主机路由的方案,或者将主机和容器网络打通,通过交换机实现大二层网络通信,这时候容器拥有独立的IP地址,不同应用的端口可以一样,应用的兼容性更好;另外也可以选择overlay等SDN方案,适应性更好,不需要改变现有的物理网络设备。

在存储方面,Docker支持存储卷,当应用需要高性能时,可以使用宿主机的存储设备;而当应用需要利用持久化保持状态,实现高可用时,可以使用网络上的分布式存储设备,这时如果主机崩溃,应用在其他主机被拉起时,通过分布式存储设备,应用可以恢复崩溃前的状态,实现服务的高可用。

在监控方面,Docker也支持通过API获取容器的CPU、MEM、NETWORK等性能指标,另外也有Zabbix等开源监控工具,方便用户直接使用。

在容器管理方面,Docker提供了Swarm容器调度管理工具,可以统一管理多台主机上的容器,另外还有第三方的容器管理工具如Mesos和Kubernetes等。

【全方位全流程的应用场景】
Docker容器和虚拟机
Docker刚开始出现的时候,人们总是拿Docker和虚拟机比较,从普通用户的角度看,Docker在功能上确实和虚拟机很像,都能提供一个隔离的环境,拥有独立的文件系统、CPU、内存、网络等。但是两者出现的动机和底层的实现都有很大的不同,虚拟机更多的是云计算时代自上而下规划的结果,承担着IaaS层资源载体的角色,实现资源的封装和隔离。而Docker主要着眼于应用的封装和隔离,把应用和其运行环境视为一个整体,统一进行构建、交付和运行。当然Docker也能实现资源的隔离,不过它是借助于内核Namespace特性实现的软隔离,没有虚拟机那样彻底。 当人们使用虚拟机的目的只是为了提供独立的执行环境,而不看重资源的隔离性时,Docker容器确实能替代此时虚拟机的角色,比如为开发提供编译环境、为持续集成提供集成环境等。
Docker和CI/CD
Docker首先统一了应用交付的方式。传统的应用交付形式五花八门,例如so、dll、war、jar等,很难统一进行交付和管理。Docker通过镜像的方式交付应用,屏蔽了应用的差异性,并提供了Dockerfile语法,用简单的几行命令来将应用构建成镜像,然后进行交付,并且能和企业现有的CI/CD流程结合起来。
Docker和DevOps
软件从研发到上线,主要包括开发、集成、测试、交付和运维几大流程。提高企业DevOps效率,就是要找到合适的工具或方法,来加强开发人员和其他IT部门的沟通和协作,加速这些流水线流程,最终缩短服务上线的时间。Docker镜像为这一流程,提供了一个完美的载体。 应用构建成镜像之后,启动应用变成了简单的一个按钮,免去了开发、测试和运维过程中繁琐的软件安装部署过程,这无疑大大提高了软件测试、运维的效率。

另外容器的隔离性,将应用划分为容器内部和外部两个世界,开发人员不用关心容器外面的软硬件环境,运维人员也不用关心容器内部的应用,大家可以缩小工作范围,更专心做擅长的工作。最后Docker镜像也为进一步提高DevOps效率提供了一个桥梁,开发和运维人员可以按照需求制定规则,来进一步加强合作,比如应用的健康检查规则等。
Docker和PaaS
Docker在PaaS层发力,并不令人意外,毕竟Docker在资源利用率和应用部署效率上有着天生的优势,而且Docker还可以部署到裸机上,并不依赖传统的IaaS层。到目前为止,基于Docker容器的PaaS平台数不胜数。即使企业没有PaaS平台的经验,借助Docker引擎和Swarm等集群管理工具,也可以轻松的管理一定规模的计算机集群,再加上使用开源或企业自研的容器管理工具,企业可以快速构建出私有的PaaS平台。

【未来:基于容器且不止于容器】

Docker拥有非常多的优势,它也给企业改革日益臃肿的IT流程,提供了一个非常好的机会。 未来几年内,大多数中小企业将逐步过渡到Docker上。另外容器技术也在继续向前发展,比如为容器专门开发的操作系统如CoreOS、Redhat的Atomic等,将为容器提供更好的执行环境和升级体验。另外多个容器共享主机内核存在的潜在安全性问题,也越来越受到重视。新的技术方案也陆续出现:比如基于虚拟化技术(KVM、Xen等)的容器引擎Hyper,可以通过VM来运行Docker镜像,避免容器共享内核,而更小更安全的Unikernel,直接将内核和应用编译到了一起,可以跑在裸机或虚拟化层之上。


 
恒生技术之眼 更多文章 致梦想|与我们一起布局未来 C++大会|章乐焱:金融行业高频极速交易系统架构与关键技术探索 重磅|恒生加入Hyperledger,开启全新区块链征程 趋势解读|章乐焱:迎风起航,区块链将引领金融业驶向何方? 干货|恒生首届技术开放日最火爆的环节,到底在聊些什么?
猜您喜欢 IDG李骁军:投资=体力活+高压活+运气max 对话吴翰清,问道云盾 【大数据专场培训】活动报名就剩最后两天!千万别错过! 科学上网:Surge.conf for Geeks 你的初心,我能“听见“