Docker—PaaS—微服务

http://bbs.csdn.net/topics/390950965


http://baike.baidu.com/view/11854949.htm


++++++++++++++++++++++++++
虚拟化VM是OS级别,docker是应用级别,是计算机技术发展史上一个里程碑式的进步,不过能不能支持大规模Cluster(几千台主机),尚不得而知。
++++++++++++++++++++++++++
Docker肯定不是最先进的技术。
大家都知道一个常识:现在的UNIX、Linux系统都是一个多用户多进程的系统。
进程存在的目的,就是隔离各个程序。
当然进程调度的性能,远比Docker等虚拟化隔离手段要高的多。
所以说,修改Linux内核,把多帐号系统适应云主机的需求,这不是一个困难的工作。
也就是说,UNIX几十年前搞的多用户多进程,本来就是用来让很多个用户同时使用一台计算机的,这同云主机的需求几乎完全一模一样。
UNIX的多账户多进程系统,也有不适合云足迹的地方,比如各种系统配置、系统服务、系统程序,都是一份整个OS共享,只能root帐号修改这些服务。
那么,很简单的就是,把Linux稍微修改一下,把OS公用的配置、服务、程序,都给改成每个用户可以单独使用,这也是不难的。而且,还可以在进程模型方 面修改一下,比如每个云主机系统都有一个crond服务执行计划,那整个云系统可以只有一个crond分享给每个用户使用,每个用户感觉不到crond是 共享的,以为还是自己独享的。这就和Apache的虚拟主机一样,一个Apache可以建立成千上万个网站,每个网站好像自己一个一样。
++++++++++++++++++++++++++
        在虚拟化盛行的当下,docker为虚拟化提供了出了虚拟机之外的另外一种选择。docker的低资源占用和效率确实为app的部署提供了一个不错的载体,然而仅就docker技术本身而言,目前更多的是一种容器技术或者说是app的载体。
        当前支持docker容器技术的Paas有很多如google kubernetes,Redhat Open Shift和 CoreOS等等开源的Paas都是不错的选择,自从docker和CoreOS分道扬镳之后,CoreOS也提出了自己的容器技术Rocket。当然 docker也不甘于仅提供docker容器技术为他人作嫁的地位退出了自己的Paas技术。
        总之docker容器技术是一个不错的技术,但是Paas领域还存在诸多实例强劲的竞争对手,至于后势如何,就需要大家拭目以待了
++++++++++++++++++++++++++
虚拟机和Docker Linux容器在改变运行、设计、开发和部署应用程序的方式。在近日于纽约召开的2014年Interop大会上,本人主持了一场专家小组讨论会,几家知名平台即服务供应商的发言人热烈探讨了这个问题:下一代应用程序如何在改变PaaS。

这场为时1小时的讨论会是为期半天的“云计算应用程序”(Cloud Applications)研讨会的一部分,专家小组成员包 括:ActiveState公司的产品管理副总裁Brent Smithurst,ActiveState开发了基于开源Cloud Foundry的 Stackato PaaS;Engine Yard公司的产品管理副总裁Carl Meadows,Engine Yard是一款独立的PaaS系统, 使用开源代码模块;红帽公司OpenShift PaaS的战略主管Krishnan Subramanian,OpenShift PaaS是另一个开 源项目;以及微软Azure首席技术官Mark Russinovich,主管微软的PaaS解决方案。

平台即服务结合了诸多工具、代码工作流程、变更管理和代码库,它们通过PaaS系统,作为一项共享式服务来提供。

讨论会一开始,每个专家小组成员回答这个问题:何谓下一代应用程序?他们的描述大致雷同:下一代应用程序更有可能由在PaaS系统上从事开发的团队构建, 而不是由颇有才华的开发人员单枪匹马或成群结队来构建。这些是用独立的模块化服务构建起来的组合式应用程序。在一些情况下,这些可能是微服务,每个微服务 在各自的Linux容器里面运行,由开发系统提供的中间件和网络接口联系起来。下一代应用程序常常是用某一种动态语言编写而成的,比如Ruby、 Python、PHP或Node.js。它们可以在不同的基础设施上移植,比如不同品牌的云架构。

这一切听起来像是过高的要求。为了活跃讨论气氛,我问每个专家小组成员他们公司的PaaS系统是否满足所有上述要求。Meadows、 Subramanian和Smithurst给出了肯定的回答,他们分别以Engine Yard、Open Shift和Stackato为例。只有 Russinovich给出了否定的回答,他表示要符合所有要求,仍存在太多的缺口,仍有太多的功能未实现。我觉得,后者给出的回答更坦诚。
++++++++++++++++++++++++++
记得前几年云计算刚起步的时候,都将云计算比作水和电,从哪儿来的不重要,而是只要一拧开关,水和电就有了。
显然,PaaS符合这样的设想。在以前可能不能实现,或者仍旧停留在探讨阶段,但Docker来了,PaaS将在云计算家族里占据更重要的地位,或许Docker技术将取代传统的PaaS容器技术,正式进入主流,Docker也将大幅拓宽PaaS的应用范围。
感觉取代IaaS也是指日可待了。个人的小观点,楼下的尽管拍砖过来~
++++++++++++++++++++++++++
很多人都问Docker到底是什么,它其实就是一个构建在LXC之上的,基于进程容器的轻量级VM解决方案。再直白一些就是Docker是将各种应用程序 和他们所依赖的运行环境,打包成标准的container/image,进而发布到不同的平台上运行,感觉像虚拟机Image,但是有本质区别,虚拟机将 整个OS运行在虚拟的硬件平台上,Docker则直接在宿主平台上加载运行应用程序。
++++++++++++++++++++++++++
Docker基于LXC的轻量级虚拟化的特点,相比KVM之类最明显的特点就是启动快,资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源,可以用快速启停来应对峰谷的web应用。
++++++++++++++++++++++++++
开源的Docker正快速成为容器化环境中应用封装的行业标准,红帽牵手Google共同推动Docker发展,大规模编配的新的开放标准,以支持云应用部署管理,如此看来,Docker的发展顺应了IT行业以应用为中心的趋势,未来看好。
++++++++++++++++++++++++++
Docker有独特的地方,是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,可以很容易地在机器和数据中心中运行,它解决了云计算最早没有标准化的描述手段和容器的难以迁移性的问题。
++++++++++++++++++++++++++
据悉,红帽协助推动了Docker技术,成为Docker项目的主要企业贡献者之一,红帽在OpenShift Online中运行了上万的容器化应用, 同时也支持客户在OpenShift Enterprise中部署其自有的容器化PaaS环境,如此看来,Docker容器的编配和管理,对于红帽用户以 及红帽企业Linux和OpenShift等产品至关重要。
++++++++++++++++++++++++++
云计算发展至今,有很多重要的问题没有得到妥善解决,比如安全性,Docker的安全特性很明显,由kernel namespaces和cgroups 实现的Linux系统固有的安全标准和Docker Deamon的安全接口,个人觉得,安全永远是相对的,Docker还在努力中。
++++++++++++++++++++++++++
Docker在于AUFS的运用,Copy on write模式的分层文件系统使容器的镜像可以像搭积木一样灵活创建和修改,并在网络上实现增量分 发,libswarm抽象了应用部署和集群管理的细节,为应用程序赋予了跨云平台和互联网级弹性,实现了跨平台,能更好支持分布式系统和并发编程。
++++++++++++++++++++++++++
PaaS实例一般都与一个特定的IaaS平台绑定,提供部署接口、负载平衡、服务绑定等,Docker在此基础上进一步创新,通过LXC这样的工具可以完 成容器创建、启动等基本操作,但使用LXC需要熟知容器内核实现原理,不难看出Docker正在影响软件开发和运维流程。
++++++++++++++++++++++++++
从运维角度来说,Docker容器可以封装任何有效负载,几乎可以在任何服务器之间进行一致性运行,开发者构建的应用只需一次构建即可多平台运行,而且运 营人员只需配置他们的服务,即可运行所有的应用,可以把任何应用及相关依赖项打包成一个轻量、可移植、自包涵式的容器,管理起来会相当便捷。
++++++++++++++++++++++++++
Docker并不是万能的,它对disk的管理比较有限,网络管理也相对简单,主要是基于namespace隔离,而且隔离性相比KVM之类的虚拟化方案 还是有些欠缺,所有container公用一部分的运行库,至于有些版本对于非AUFS的文件系统的支持还不够稳定,相信Docker还是有发展和改进的 空间的。
++++++++++++++++++++++++++
对于Docker的自动化部署解决方案整体感觉是:使用Go语言编写,用cgroup实现资源隔离,容器技术采用LXC,提供了能够独立运行Unix进程 的轻量级虚拟化解决方案,算是一种在安全、可重复的环境中自动部署软件的方式,在Docker安装完毕后,后台进程也自动启动了,可以安装虚拟机实例了, 在Docker帮助下搭建一个Tomcat运行时环境,很简单,有PAAS的身影。
++++++++++++++++++++++++++
传统意义上PaaS实例一般都与一个特定的IaaS平台绑定,提供部署接口、负载平衡、服务绑定等,而Docker世界中产生的微PaaS,在此基础上进 一步创新。这个领域比较有代表性的是Flynn和Deis.IO,它们都是开源项目。Flynn基于Docker之上进一步封装了整个构建、部署、运行工 作流,使得用户只需简单地提交代码即可完成开发到运行的快速转换。Deis.IO,它的一个亮点是用CoreOS承担底层资源管理的任务,对CoreOS 的支持的优势是CoreOS目前已可以运行在多个公有云平台、虚拟机和物理机环境下,为Deis提供了与生俱来的跨云平台能力。
Flynn和Deis的共同特点,是对复杂和大规模分布式应用的原生支持。微PaaS创业公司层出不穷,面对激烈的竞争,走到最后的是谁能更好的服务软件开发和运维流程,快速的搭建自己的生态系统,Docker在努力做~
++++++++++++++++++++++++++
Docker想要成为PaaS不可替代的平台要走的路还很长,或者说有可能没有这么一天,几点:
1.隔离性相对KVM之类的虚拟话方案还是有所欠缺
2.网络管理还相对比较简单
3.对DISK的管理还比较简单
4.对于操作系统有一定的限制(如果未来的世界都是linux的世界的话,那还有可能)

posted @ 2019-10-12 17:34  张同光  阅读(243)  评论(0编辑  收藏  举报