设为首页 收藏本站
查看: 1185|回复: 0

[经验分享] 对Docker的价值和应用场景分析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-23 09:59:31 | 显示全部楼层 |阅读模式
通过cgroup,Docker具备一定的能力控制Container的资源使用,但在网络、磁盘、CPU的使用上,度量和隔离能力还没有VM成熟;
此外,从用户角度来看,VM可以做到非常透明,可以直接理解为一台主机;但Container在网络连接、数据存储方面都需要经过特殊处理;

所以,与虚拟化相比,从隔离性上看,Docker的优势在于性能损耗低,劣势在于隔离层次比较高;
如果你的需求在是单机上进行尽可能多的隔离,那Docker是首选;
如果你的需求是尽可能彻底的隔离,对硬件资源精准控制且可度量,同时对隔离份数要求不多的话,那虚拟化是首选;

2. 封装性
从Docker的Logo以及官方的定义来看,它的主要能力并不在隔离性,而在于封装性,也就是应用的打包、部署、运行;

在封装方面的优势,主要体现在:
封装大小
   与VM相比,Docker的image确实很小,官方的Centos image大概只有220M(被精减成最基本的Centos了,连ifconfig命令都没有,安装完常用工具,你会发现也不小了);
可对应用高度定制和封装
   可通过Dockerfile定义应用包,Image内的部署可高度定制和封装,对外接口收敛且清晰;使用者无需关注细节;
Image仓库及版本管理
   非常成熟的公共和私有仓库搭建和使用,以及版本管理,并可通地仓库很容易的进行共享、分发、部署;
应用和运行分离
   我们所看到的Image是静止的,只读的;将image运行起来后是Container了,在运行时的修改,只影响当前Container,不影响Image;

从上面可以看出,与VM Image的部署能力相比,Docker设计理念先进,优势明显,而且几乎没有啥缺点。

但从封装部署角度来看,Docker的竞品应该不是VM,而是RPM+YUM,DEB+APT这样的组合。
你会发现,与这两组合相比,能力出奇的相似了,但还是有些区别:

封装能力:
Docker的Image,可以轻易实现在Centos上面跑Ubuntu,而且非常轻量,这个是Rpm,Deb不具备的;
这个在一些测试、学习、或小规模的Paas场景下,是非常有价值的;
但任何较大规模的应用,我想不太可能出现这样的部署;
封装粒度及依赖管理:
Docker自kernel之上,全打包在一块了,里面包含了Linux用户环境、系统类库、应用程序;可以理解为,一个Docker Image的外部依赖只有Linux Kernel了;从另外一方面看,极大提升了移植能力;
Rpm、Deb的打包粒度比Docker更细,只打包单个应用自身,外部依赖通过只记录并不存储在包内,通过apt,yum这样的辅助工具也非常容易解决外部依赖;这样做的好处在于更轻量,理论上包大小肯定小于Docker;在大规模业务部署下,上千台设备发布20M的RPM,与发布200M的Dockerimage,效率上的差距应该还是比较大的;
实际应用当中,在解决外部依赖问题上,C/C++程序还可以简单的通过静态链接来实现;Java/PHP/GoLang这类程序基本不存在系统类库的依赖,跨平台的能力也胜过Docker本身;
跨平台:
在各大Linux发行版下,你都可以按相同的方式使用Docker来管理打包及部署;但Rpm,Deb都有自己的粉丝和发行版本,在发行版间不通用;
但Docker自身的学习和部署成本,要高于Rpm,Deb;
所以,从封装性看,Docker远胜于VM,与Rpm+Yum&Deb+Apt能力相当,从用户角度来看是多了一个选择;

抛开隔离性,假设你需要在单机上运行一个MySQL,你是希望安装Docker、再用Docker来部署MySQL?还是直接yum install mysql?

综合来看,Docker的核心价值就在于隔离性和封装性,并在两者间有个很好的平衡和兼顾,可预见的是在小规模的Paas领域是最好的解决方案。

三、Docker在公司内应用的思考
前面讲到Docker的核心价值在于隔离性和封装性,讨论Docker在公司内业务的应用也应该从这两个方面来看。
哪些场景可以用到隔离性:
研发测试流程,单机多版本并行部署和运行;
公司内部的类Paas服务,比如TDW计算、蓝鲸;
海量服务的正式环境,基本单个服务就能跑满单机,可以说完全没有隔离性需求;
哪些场景用到封装性:
公司所有业务都需要打包部署,但各大业务都已经有非常成熟的包发布系统;整合研发、编译、测试、发布以及架构、配置、路由等各方面的能力;推倒现有包发布系统,基于Docker重构的话,开发和用户学习成本相当高,但技术上并没有明显价值。
如果是全新开发的技术框架和运维体系的话,Docker会是一个较好的选择,但个人更倾向于Centos+Yum+RPM的组合。

四、其它
IT技术日新月异,新技术和组件层出不穷,类似Docker之类的使用势必要求基础运营环境与业界保持同步更新。
为了能保持与业界同步,技术团队仍需花费巨大精力投入到无任何业务产出的工作当中。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-117549-1-1.html 上篇帖子: docker file 下篇帖子: ubuntu 下升级docker版本 价值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表