【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践


Docker是一个开源的应用容器引擎,提供了一种在安全、可重复的环境中自动部署软件的方式,允许开发者将他们的应用和依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux机器上。由于部署速度快、开发测试敏捷、资源占用少,越来越多的企业开始使用Docker,以减低开发和运维的成本。

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

12月9日下午,云栖计算之旅线下沙龙第2期《Docker在云平台上的最佳实践》专场在北京阿里中心望京A座举办,来自各大互联网公司的Docker开发者和运维人员齐聚,会场座无虚席,阿里云容器团队的3位Docker专家进行了分享。下面来回顾一下本次沙龙的精华内容。

Docker监控技术原理和阿里云容器监控服务实践


系统与应用监控是保障服务可用的重要环节,在大型网站系统中,监控是保障可用性的最后一个环节。在本次沙龙上,阿里云容器技术专家晨末分享了《Docker监控技术原理和阿里云容器监控服务实践》。
随着应用场景的复杂度增加,网站系统的架构一直在不断演进,从原始阶段的应用和数据库在同一台服务器上,到应用与数据分离、再到缓存服务、应用服务集群化、使用负载均衡、数据读写分离、使用反向代理和CDN,后来又发展到使用分布式数据库、应用拆分、使用分布式服务和微服务等。

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

如此复杂的高可用分布式服务系统,背后需要强大的运维系统支撑,如果没有监控服务,就没办法对系统“望闻问切”,找不到系统的问题,就没办法做针对性的改进,演进就会停止,线上服务就可能处于随时崩溃的边缘,会成为运维与开发人员投上的达摩克里斯之剑。

监控系统体系如下。
【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

可以监控如下两个指标:基础技术性能指标(包括底层物理设备监控、操作系统监控、应用容器监控等)和业务运营指标,以发现设备异常和业务系统异常,提前进行系统扩充和业务系统调度处理,做到“上医治未病”。
针对操作系统的监控,比如物理设备上CPU、内存的使用以及进程等情况,可以通过Linux系统中的/proc目录来查看。Docker容器的所有内存状态信息,可以在“/sys/fs/cgroup/memory/docker/容器ID” 目录下查看。
与传统监控相比,容器监控具有监控对象“动静结合”、系统指标统计维度多维的优势。几个关键的容器监控指标:

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

阿里云提供了功能强大的容器监控服务,集合了基础数据采集、自定义监控指标、第三方监控集成、监控报警与弹性伸缩等能力。架构图如下。

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践


阿里云容器监控服务的详细信息,以及容器监控实战经验分享,请看PPT和精彩视频回顾。



当容器服务遇到了深度学习


从20世纪50年代的人工智能萌芽,到80年代开始兴起的机器学习,再到2010年的深度学习,人工智能已经进入了深度学习时代。在ILSVRC的ImageNet计算机视觉系统识别项目上,基于深度学习的机器视觉能力已经接近人类(如下图)。今年初AlphaGo与韩国棋手李世石4:1的比赛结果,再次向人们展示了人工智能的强大之处。

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

当容器服务遇到了深度学习,会碰撞出什么样的火花,且听阿里云容器服务技术专家车漾为大家介绍两者如何混搭出1+1>>2的效果。

GPU的出现,也推动了深度学习的发展,但是目前常见的单GPU并不能满足深度学习井喷式的计算需求,而通过容器技术,可以很方便地对云上计算集群按照GPU进行调度、隔离和监控。

阿里云容器服务针对GPU的管理提供了很好的支持,比如调度GPU:

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

监控GPU:

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

结合阿里云的高性能计算服务(HPC)以及其他相关的云服务,可以构建出完整的深度学习解决方案。
【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

车漾在现场演示了图像识别技术以及GPU监控操作,详细信息请看PPT和精彩视频回顾。


基于容器技术的DevOps探索


最后,阿里云容器服务团队的高级研发工程师秦妤嘉分享了《基于容器技术的DevOps探索》。
近两年,Docker大热,大家在谈论Docker的时候,也经常会提到DevOps。
在一个较成熟的软件和服务交付的团队里,就技术层面来说主要分为三个组成部分:开发、测试和运维。开发测试团队比较关注的是代码能否运行,而运维比较关注的时系统能否在上线后稳定运行。于是隔阂就产生了。
DevOps的出现就是为了解决这一问题。DevOps的作用就是将这三个部分紧密的连接起来,提供一条从软件开发到质量保障到技术运营的自动化流水线,加强不同角色之间的沟通和协作,从而减少资源浪费、提高质量,并将产品快速推向市场。
【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践
而Docker就是实现DevOps最合适的工具之一,甚至变革了软件交付方式,可以有效解决持续交付过程中遇到的问题,比如环境一致性、版本管理、快速响应等。
下图是一个基于时下流行的持续集成工具Jenkins和阿里云容器服务构建的完整的持续交付流程。

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践

Jenkins 2.0版本中包含了一个新的管道(pipline)构建交付系统,管道的设计理念是基于Groovy DSL,实现一套灵活、可扩展的持续发布(CD)工作流,将原本独立运行于单个或多个节点的任务连接起来,实现复杂发布流程。
会上还演示了如何通过阿里云容器服务和Jenkins从0开始搭建一个持续交付系统。详细信息请看演讲PPT和视频回顾。

【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践


关于云栖计算之旅


云栖技术之旅,是由阿里云云栖社区主办,整合了阿里集团内部多个领域*技术专家与技术资源,通过线下技术培训的方式,为热爱技术的朋友提供一个交流&分享技术观点、碰撞精彩火花的平台。
第3期预告(12月23日前端专场):https://yq.aliyun.com/promotion/140

关于阿里云容器服务


阿里云容器服务(Container Service)提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命周期管理。容器服务极大简化了用户对容器管理集群的搭建工作,无缝整合了阿里云虚拟化、存储、网络和安全能力,打造Docker云端最优化的运行环境。容器服务提供了多种应用发布方式和流水线般的持续交付能力,原生支持微服务架构,助力用户无缝上云和跨云管理。

上一篇:Python 深度学习,你的 Keras 准备好了吗?


下一篇:InstallUtil操作WindowsService