姚翔的部落格

初识Docker

| Comments

几天前通过同事知道了Docker这个工具,今天在工作的空暇时间打开了它的官网想进一步了解一下它,在完成了一个快速的练习教程后,惊奇地发现其优秀的功能,但却混乱了我的思维。弄清以及理解其原理一直我学新东西的方法,当然也是一种束缚,以致我在不清楚其原理前始终都会不得使用的要领,所以这一次我又开始了漫漫Google之路,想弄明白这个工具的概念到底是什么。

结果不太理想,因为它的底层技术涉及到LXC和AUFS这些我完全不了解的东西,所以在我写这篇文章的时候,脑中还处于一片迷雾之中。但我略微看清了一些它的轮廓,所以我想用自己的语言来描述一下我所见到的景象,以供那些和我一样初次接触Docker的人一些参考。

首先让我把平时我们的开发工作比喻成一次表演(发布)的排练过程,有表演就涉及到舞台(运行环境),我们肯定希望最终的表演舞台同我们排练时使用的是相似的,这样才会达到最好的表演效果。但实际情况是,各个地点的场地都不一样,这样布置舞台(配置环境)就成为一个非常繁琐和痛苦的工作。

Docker为我们提供了什么呢?它带来一个大大的集装箱。它告诉演出者(开发人员),让他们在这个集装箱的空间里进行排练,同时保证到时候所有演出场地都会有一个一模一样的集装箱场地。Docker又跑到各个场地,告诉那些承办方它将要放一个集装箱在场地上作为舞台,尺寸是多长多宽多高,他们要做的就是到时候腾出一块能放这个集装箱的空间就可以了。

听起来似乎一切问题都解决了,但是演出者有些不满意,这个集装箱空空荡荡的,完全不像个舞台呀。没问题,Docker拿出了一本册子(Docker Hub),里面有许许多多舞台模板,都是根据这个集装箱设计的,而且还有其他乐队贡献的他们设计的模板,完全不用担心。演出者们挑了好久,终于选择了一款自己喜欢的,但是仍然觉得不满意。这也没问题,你们可以自己再二次改造啊,只要把你们需要装修的步骤(Dockerfile)写下来就可以了。于是Docker把模板的布置步骤再加上演出者后期改进的装修步骤混合成一份新的施工说明书交给了各地的承办方。

一个个集装箱被运到了各个场地,工人们根据施工说明造出了一个个一模一样的集装箱舞台,和演出者们排练时用的完全一样。这下就真的不用担心演出效果和排练时不一样了。

Comments