Docker应用篇:聊聊Docker容器的应用场景 [转载]
  

规划经理 5366

{{ttag.title}}
聊聊Docker容器的应用场景


    过去几年开源界以openstack为代表的云计算持续火了好久,这两年突然又冒出一个叫Docker的容器技术,其发展之迅猛远超预料。

    网上介绍Docker容器的文章已经很多了,用一句话概括:Docker是一种轻量虚拟化的容器技术,提供类似虚拟机的隔离功能,并使用了一种分层的联合文件系统技术管理镜像,能极大简化环境运维过程。

    Docker容器云则是使用Docker技术打造的一站式容器云服务平台,即CaaS(Containers as a Service)-容器即服务;可以将它简单看作为PaaS的升级版,使用Docker容器技术的CaaS平台功能更强大,使用灵活,部署更方便。

    Docker容器作为一个全新的概念虽然广受关注,但是对于如何使用Docker,将容器技术真正落地用起来,目前估计很多人还没有非常清晰的思路。写这篇文章主要目的就是根据Docker容器的特点,描述Docker容器到底能用来干什么,达到抛砖引玉的目的。

    可以认为容器云是处于IaaS和PaaS之间的位置,容器编排集成度越高越像PaaS,反之越像IaaS,据此这里简单地将Docker容器的使用分两大类:主机和服务。


作为云主机使用

相比虚拟机来说,容器使用的是一系列非常轻量级的虚拟化技术,使得其启动、部署、升级跟管理进程一样迅速,用起来灵活又感觉跟虚拟机一样没什么区别,所以有些人直接使用Docker的Ubuntu等镜像创建容器,当作轻量的虚拟机来使用。

特别是现在随着系统、软件越来越多,开发测试环境越来越复杂,仅仅靠多用户共享的这种方式节省资源带来的后果就是环境完全不可控。Docker容器的出现让每个人仅仅通过一个几KB的Dockerfile文件就能构建一个自定义的系统镜像,进而启动一个完整系统容器,让人人都能成为 DevOps。

容器云主机也完全能像普通主机一样随意启动、稳定运行、关机、重启,所以在上面随意搭建博客、小网站等完全不在话下。除了常用的托管服务业务,你完全可以自定义任何用法,包括在上面使用任何云服务提供商的云硬盘、云数据库,部署各种你需要的服务。

目前docker容器管理服务器在windows下运行需要借助Toolbox工具,虽然微软在2014年底就计划提供Windows Server容器镜像但目前还没有发布,所以想在docker里跑windows系统的容器的人还需要等待,希望到时候微软能裁剪出一种轻巧的windows基础镜像,毕竟容器本身就是一种更轻量级的系统。


作为服务使用

如果你仅仅把docker容器当作一个轻量的固定虚拟机用,那其实只能算是另类用法,Docker容器最重要价值在于提供一整套平台无关的标准化技术,简化服务的部署、升级、维护,只要把需要运维的各种服务打包成标准的某公司,就可以在任何能运行docker的环境下跑起来,达到开箱即用的效果,这个特点才是Docker容器风靡全球的根本原因。

下面重点列举几个使用docker容器部署服务的场景。

1. Web应用服务
Web应用服务是使用最广泛的一类服务,典型的架构是前端一个Tomcat + Java服务,后端mysql数据库。

前端的Java web服务器是最适合使用Docker容器的,先将Java运行环境、web服务器直接打包成一个通用的基础docker镜像,之后再将自定义应用代码或编译程序包加入到该基础镜像中就能产生一个新的应用镜像,最后通过docker服务立马就能以容器的形式启动web应用服务。

因为web应用程序一般是无状态的,随着业务访问量增减,用同样的镜像新建、销毁容器即可轻松实现伸缩(前面还需配上DNS域名或者负载均衡的服务),例如下图所示。
1.png
Docker容器的web服务


2. 持续集成和持续部署

互联网行业倡导敏捷开发,持续集成部署CI/CD便是最典型的开发模式。

使用docker容器云平台,就能实现从代码编写完成推送到git/svn后,自动触发后端CaaS平台将代码下载、编译并构建成测试docker镜像,再替换测试环境容器服务,自动在Jenkins或者Hudson中运行单元/集成测试,最后测试通过后,马上就能自动将新版本镜像更新到线上,完成服务升级。整个过程全自动化,一气呵成,最大程度地简化了运维成本,而且保证线上、线下环境完全一致,线上服务版本与git/svn发布分支也实现统一.

2.png
Docker的持续集成持续部署流程

3. 微服务架构使用
如果说上面两种应用场景还不足以体现出与传统的PaaS平台相比的巨大优势的话,那么对微服务的架构这种复杂又灵活的使用场景的无缝支持绝对具有革命意义。

微服务架构将传统分布式服务继续拆分解耦,形成一些更小服务模块,服务模块之间独立部署升级,这些特性与容器的轻量、高效部署不谋而合

如下图所示,每个容器里可以使用完全不同环境的镜像服务,容器启动即产生了一个独立的微服务主机节点(独立的网络ip),上层服务与下层服务之间服务发现通过环境变量注入、配置文件挂载等多种方式灵活解决,而且还可以直接将云平台提供的各种云服务与自定义的微服务整合组成一个强大的服务集群。

更重要的是,拥有如此多服务的集群环境迁移、复制也非常轻松,只需选择好各服务对应的docker服务镜像、配置好相互之间访问地址就能很快搭建出一份完全一样的新集群

3.png
Docker容器搭建微服务架构例子

4. 其他应用场景

跑一次性/定时任务
有些情况下用户只是需要执行一次性的任务,例如计算出某个结果即可,如果采用传统的服务模式,服务器需要一直运行,造成的极大的资源浪费。而容器的快速创建、销毁能很灵活满足这种完全按需付费的场景。只要制作好一次性程序运行的docker镜像,当需要运行的时候实时通过镜像创建出容器来执行任务,程序执行完成容器自动退出释放资源。
当然,容器本身只包含静态的镜像和上层的临时可读写层,运行的数据是不会持久化的,所以任务相关数据可以从云存储、云硬盘或者云端数据库里读写。

科学计算服务
在信息化的今天,除了计算机领域,自然科学等领域也越来越需要借助一些复杂的程序软件来做计算分析,如果还要求他们学习繁杂的服务运维部署就太麻烦了,国外就有科研人员用Docker自行部署IPython Notebook服务器开展数据科学研究的例子。

游戏和网联网等
腾讯曾宣称他们已经将docker容器用在游戏服务端使用docker,因为对游戏不了解,具体怎么用的没太关注,有需要的人可以参考下他们的使用思路。


欢迎跟帖,即日起至8月25日,分享您遇到的docker使用场景,每条分享除了能获得社区提供的100S豆外,更可与美女研发姐在线互动,免费获得技术支持哟!

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

Sangfor_闪电回_小云 发表于 2016-5-17 10:44
  
学习了!
修业时代朱 发表于 2016-5-18 11:33
  
      腾讯在游戏服务端应用Docker,我最早是在Dockerone社区看到的,名为“Docker在英雄联盟游戏中的实践探索”,主要讲述了腾讯如何使用Docker与jenkins构建流水线(Pipeline),感兴趣的童鞋可以去Docker社区看下,网址是http://dockerone.io,里面都是大神,说话需谨慎!
      LOL当前这么火爆的网游,在线用户量这么大,肯定和Docker有关系!
规划经理 发表于 2016-5-19 11:49
  
对使用场景这块,欢迎大家补充案例和一起探讨~

另外大家如果遇到自家业务或是客户业务有适合的场景能反馈给我们

发我站内消息即可,可提供技术支持撑的哦~ PS: 反馈有礼哦
新手098975 发表于 2019-5-8 10:31
  
好东西,收藏了
新手589624 发表于 2020-4-2 13:55
  
了解一下
新手727241 发表于 2020-4-13 07:07
  
感谢楼主分享
sxfusr 发表于 2020-6-10 12:12
  
打赏学习,感谢分享
新手589624 发表于 2020-8-10 11:09
  
学习一下
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
每周精选
干货满满
技术咨询
信服课堂视频
标准化排查
秒懂零信任
自助服务平台操作指引
新版本体验
产品连连看
安装部署配置
功能体验
GIF动图学习
玩转零信任
2023技术争霸赛专题
技术晨报
安全攻防
每日一记
深信服技术支持平台
天逸直播
华北区交付直播
社区帮助指南
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
通用技术
卧龙计划
华北区拉练
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人