docker:开发服务环境的魔术箱

广告位招租
扫码页面底部二维码联系

第一次真正了解docker,是在公司的一【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】次架构分享会议上,是在容器技术的版块顺便【版权所有,侵权必究】【作者:唐霜】提交并作为大头介绍的。回来以后自己了解,【原创内容,转载请注明出处】原创内容,盗版必究。便迅速建立了“docker将大行其道”的【本文首发于唐霜的博客】【本文首发于唐霜的博客】想法,决定先简单学习一下。

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net【本文受版权保护】

用图来理解docker(容器技术)【本文首发于唐霜的博客】

【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net【作者:唐霜】【作者:唐霜】【本文首发于唐霜的博客】

容器技术是虚拟化技术的衍生,它的原型是虚【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net拟化技术,但是其用于不在于虚拟机,而是提【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】供更加上层(应用层)的应用。所以,在了解【原创不易,请尊重版权】【版权所有,侵权必究】docker之前,你最好使用过VMwar本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。e之类的虚拟机,在虚拟机里面自己安装系统【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】,搭建开发环境等,有了这些经验,对理解d【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。ocker非常有帮助。

转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】

简单的说,容器技术是提供应用软件在独立环【转载请注明来源】【原创内容,转载请注明出处】境里运行的最小化虚拟技术。“容器”可以理【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。解为一个箱子,在这个箱子里,可以放一个应本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。用,也可以放一组应用,但是无论外部环境怎【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。么变化,把这个箱子放到另外一个地方(另外【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。一台电脑),这个箱子的这些应用可以毫无阻原创内容,盗版必究。本文作者:唐霜,转载请注明出处。碍的运行,且得到的结果和之前一模一样。

【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】【原创内容,转载请注明出处】
这是虚拟机的示意图,虚拟机是在宿主操作系统上虚拟出一台机器,再在这台机器上安装操作系统,运行起来之后,再在这个操作系统里面安装应用程序。好处是用户可以类似得到一台独立的服务器,比如阿里云的云服务器,就是通过这种技术实现的。

这是虚拟机的示意图,虚拟机是在宿主操作系【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。统上虚拟出一台机器,再在这台机器上安装操未经授权,禁止复制转载。原创内容,盗版必究。作系统,运行起来之后,再在这个操作系统里本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net面安装应用程序。好处是用户可以类似得到一【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net台独立的服务器,比如阿里云的云服务器,就转载请注明出处:www.tangshuang.net【本文受版权保护】是通过这种技术实现的。

【本文受版权保护】本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net

你可以从上图看到,如果你在使用Virtu【本文受版权保护】本文作者:唐霜,转载请注明出处。alBox虚拟机的话,无论你自己的操作系【作者:唐霜】【原创不易,请尊重版权】统是windows还是mac os,得必未经授权,禁止复制转载。【本文受版权保护】须在virtualbox里面安装安装一个本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net新的操作系统,而这个操作系统可以和宿主操原创内容,盗版必究。【未经授权禁止转载】作系统不同,比如安装Ubuntu操作系统本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】

【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】未经授权,禁止复制转载。【版权所有,侵权必究】

虚拟机技术非常棒,通过这种虚拟技术,云服【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。务商可以在一台服务器上创建非常多的服务,【原创不易,请尊重版权】【原创内容,转载请注明出处】卖给不同的客户。但是它的缺陷是,如果这些转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】用户的需求,很大一部分在底层上是相同的,【转载请注明来源】转载请注明出处:www.tangshuang.net那么这台服务器会浪费很多资源。比如说这台本文版权归作者所有,未经授权不得转载。【转载请注明来源】服务器上面提供了20个虚拟机,卖给了15【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】位客户,其中10位客户都是搭WordPr【未经授权禁止转载】【转载请注明来源】ess网站,而且使用的都是lnmp环境,原创内容,盗版必究。【本文首发于唐霜的博客】连配置都一样,除了WordPress代码本文作者:唐霜,转载请注明出处。【未经授权禁止转载】和数据库数据不同外,其它几乎没有区别。这原创内容,盗版必究。本文作者:唐霜,转载请注明出处。就是极大的浪费,完全可以在操作系统、ng著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。inx、mysql等这些层面提供一套服务著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】,用户仅仅在WordPress和数据库层原创内容,盗版必究。【本文受版权保护】面进行制定。(不过虚拟主机其实就可以实现【作者:唐霜】原创内容,盗版必究。了,所以这个例子并不好,更好的例子应该是【作者:唐霜】原创内容,盗版必究。用于计算场景的例子。)而提供更加丰富的云【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】计算集成环境,比如SEA、阿里云之前上线【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net过的ACE,就更加节省资源,性能就更好。

著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】
这是docker的示意图,docker虽然也是虚拟化技术的实践,但是并不依赖虚拟机,容器内的应用虽然依托于同一个操作系统,但是它们之间相互独立,可以提供给不同的用户使用。

这是docker的示意图,docker虽【作者:唐霜】本文作者:唐霜,转载请注明出处。然也是虚拟化技术的实践,但是并不依赖虚拟【本文受版权保护】转载请注明出处:www.tangshuang.net机,容器内的应用虽然依托于同一个操作系统【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。,但是它们之间相互独立,可以提供给不同的原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。用户使用。

【转载请注明来源】未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net

上图中APP A和APP B我们可以想象【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net为淘宝和天猫(假象),它们运行在同一台服【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】务器上面,但并没有像前面的虚拟机一样,各【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。自创建一个单独的系统环境,而是直接运行在本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。服务器上面,各自依赖自己容器内的环境和软【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】件,相互不影响。

【转载请注明来源】转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】

一个容器,其实不仅包含了自己内部运行的程【本文受版权保护】【作者:唐霜】序,其实同时也包含了自己运行的环境。

【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。

运行在Linux上的容器,不可能在win转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】dows环境中运行起来,比如说APP A未经授权,禁止复制转载。【本文受版权保护】是apache linux版本,那么直接本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。把这个容器放在windows上是跑不起来【作者:唐霜】【版权所有,侵权必究】的,怎么办呢?docker在window本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.nets和mac os系统上提供了一个精简版的原创内容,盗版必究。【本文受版权保护】virtualbox,在这个virtua【作者:唐霜】原创内容,盗版必究。lbox里面运行一个精简版的Linux操原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】作系统,容器将被跑在这个Linux上,所【未经授权禁止转载】【本文受版权保护】以在windows和mac os上,do本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】cker的性能肯定要稍微差一些。

【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。

比虚拟机快N倍原创内容,盗版必究。

【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】【本文受版权保护】

每一台虚拟机有自己的操作系统,虚拟机本身未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net的资源消耗,还有内部的应用,是一个庞大的著作权归作者所有,禁止商业用途转载。【作者:唐霜】资源消耗体。但docker实现的这种架构【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。,几乎是宿主的,特别是在Linux内核的著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。机器上运行时,根本不需要有太多额外的花销【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】,所消耗掉的资源,和直接将这个应用运行在著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net这台电脑上没什么区别。

本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】本文作者:唐霜,转载请注明出处。

可以这样说,从资源消耗上看,将应用运行在【本文受版权保护】著作权归作者所有,禁止商业用途转载。docker上,和直接运行在宿主机操作系【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net统上几乎无差,但是如果直接将一个应用跑在未经授权,禁止复制转载。【转载请注明来源】宿主机上,那它不能再跑第二个,比如ngi原创内容,盗版必究。【转载请注明来源】nx,你在你的服务器上面装了一个ngin【本文受版权保护】本文作者:唐霜,转载请注明出处。x,就不能再装第二个。但是如果在dock本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。er上跑,则相当于在跑nginx时的时候著作权归作者所有,禁止商业用途转载。【本文受版权保护】分家了,各自跑各自的,虽然都跑在Linu本文作者:唐霜,转载请注明出处。【转载请注明来源】x上,但这两个nginx互不影响,没什么原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。关系。

原创内容,盗版必究。【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。

虽然容器和虚拟机不一样,但是在文件系统上本文作者:唐霜,转载请注明出处。【未经授权禁止转载】还是不够方便,比如我们传统的做法是可以通本文版权归作者所有,未经授权不得转载。【本文受版权保护】过ssh远程上传文件到服务器上,但是如果【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net运行docker,这个动作就不好办,就像【访问 www.tangshuang.net 获取更多精彩内容】【访问 www.tangshuang.net 获取更多精彩内容】你不容易直接将文件上传到服务器上的一台虚【原创不易,请尊重版权】【本文受版权保护】拟机里面去一样。当然,这完全是可以解决的【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】,这里只是想说明容器内的代码,需要更加复【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。杂的传送技术。

【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。

但不管怎样,运行docker启动一个容器【转载请注明来源】著作权归作者所有,禁止商业用途转载。只需要几秒钟,而启动一个虚拟机起码需要几【原创不易,请尊重版权】【原创内容,转载请注明出处】分钟,这完全由不同的技术所决定。基于此,不要再用虚拟机和docker作比较著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。

【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net

魔术箱:实现相同的环境原创内容,盗版必究。

原创内容,盗版必究。【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】

有了容器技术,我们可以在不同的电脑上部署【转载请注明来源】转载请注明出处:www.tangshuang.net几乎完全一致的代码环境,这就避免了我们以【原创不易,请尊重版权】【未经授权禁止转载】往经常出现的情况:在我电脑上跑明明好好的【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】,怎么上了服务器就挂掉!

【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。

当我们在自己的电脑上开发好代码,部署到服【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。务器之后,由于环境的改变,导致代码无法运【原创内容,转载请注明出处】【原创不易,请尊重版权】行,这是开发中最常见的问题了。但有了do本文版权归作者所有,未经授权不得转载。【作者:唐霜】cker之后,我们可以在本地开发的时候,【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。就配置好一个环境,将这个环境做到和服务器【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net一样安全、高性能,并做成一个镜像。开发完原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。后,把代码直接放到这个容器里面跑、测试,原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。甚至直接把装了代码的容器做成镜像,再把这原创内容,盗版必究。原创内容,盗版必究。个镜像放到服务器上的docker去跑,在【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。服务器上稍作修改(比如把80端口映射到容【未经授权禁止转载】未经授权,禁止复制转载。器的ip和端口上),这样就可以直接访问服【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。务器,得到的结果跟我们在本地看到的结果一原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。样。

【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】【作者:唐霜】

这个例子让我们完全摆脱了以往的服务器部署著作权归作者所有,禁止商业用途转载。【作者:唐霜】工作,以前,我们使用多台服务器搭建相同的【本文首发于唐霜的博客】原创内容,盗版必究。环境,不仅需要做重复的工作,浪费时间,而原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net且更重要的是,部署的环境还存在误差。

本文版权归作者所有,未经授权不得转载。【作者:唐霜】【作者:唐霜】原创内容,盗版必究。

可以说,这样的部署模式,直接颠覆了我们以本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】往的代码部署模式,说不定很多公司的工作流【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】程,也会因此改变。

【本文受版权保护】【版权所有,侵权必究】【本文首发于唐霜的博客】【未经授权禁止转载】

新的问题【关注微信公众号:wwwtangshuangnet】

转载请注明出处:www.tangshuang.net【转载请注明来源】【本文首发于唐霜的博客】【本文受版权保护】【版权所有】唐霜 www.tangshuang.net

一个新技术的诞生,解决了一些问题,也带来【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】了一些问题。

本文作者:唐霜,转载请注明出处。【未经授权禁止转载】未经授权,禁止复制转载。

传统的部署模式虽然繁复,但是技术相对成熟原创内容,盗版必究。未经授权,禁止复制转载。,借助云平台,速度也提升不少。但如果转到【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。容器技术后,虽然带来了好处,也带来了一些【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。比较困难的问题,比如容器与容器之间的集群【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。、安全问题等,这些问题就像一个个坑,又会未经授权,禁止复制转载。【本文首发于唐霜的博客】有很多人来慢慢填,编程不止,填坑不停。

【作者:唐霜】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net原创内容,盗版必究。【版权所有,侵权必究】

但无论如何,docker在将来大行其道是【版权所有,侵权必究】【原创不易,请尊重版权】必然趋势,特别是在大公司,为同一个产品做【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】开发的人达到一定的数量之后,协作起来就特未经授权,禁止复制转载。【原创不易,请尊重版权】别困难,而docker的出现,无疑为这些【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】公司,带来了新的解决方案。

【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】

2016-10-07 9619 , ,

为价值买单,打赏一杯咖啡

本文价值96.19RMB