Docker实战:一部奋斗史

前段时间,一篇《Docker实战:一部失败史》的文章在2b这个圈子惊起一片哗然,其关注度不亚于c端消费者的双十一。原文作者(国外)写这篇文章的主观意愿不得而知,当然我们也不是一个动机论的拥趸,仅作为一个再普通不过的容器技术创业者身份,聊聊我们的Docker实战:一部奋斗史。

Docker并不是一门新技术。

如果诸位之前就使用其他容器技术,那么上手Docker很简单。如果之前不了解容器技术也没有问题,只是一些容器的思维需要你去了解然后再去使用。就像使用智能机之前,并不需要你一定使用过非智能机作为铺垫。Docker公司推出的以容器管理为核心的一整套工具是在已有技术(LXC,并借助SCM的设计思想)的基础上做的延续性改进,所以Docker并不是一门新技术,他的创新在于思想层面,我总结以下几点:

1.打包(封装)

Docker利用容器技术将软件的代码和环境打包在一个镜像中,这是它的技术特性。从思想层面考虑,它改变了软件交付方式,让软件的生产者将软件做出了之后交付到最终用户那里保持绝对的一致性。通俗地讲,容器技术将软件的运行与环境彻底隔离了。

给大家举个例子:

windows系统大家都用过,微软花了10几年的时间,自从windows系统问世以来,一直到win7才基本上解决一个困扰了多年的问题——共享动态链接库的隔离。说得通俗一点就是隔离每个软件的依赖文件使之互相不受影响。

问题是怎么产生的呢?

软件是由不同公司编写的,但库又是共享的,因此随着软件的发布,软件厂商会将自己的动态库打包发布,到了用户那里直接安装,大家别忘了这个是共享库,A软件用A版本的,B软件用B版本的,最终我们可爱的操作系统就因为安装一些软件被搞崩溃蓝屏,坠入到平均1个月重装一次系统的循环当中。

 

20161114181652

注释:软件把机器搞死了,如何破? 你重装系统试试。

 

注释:大家都知道这个对话框的提示是开玩笑的对吧,即使你重新装一遍软件又怎样呢?可能其他的软件又不能运行了,怎么破? 你再重装系统试试。

注释:大家都知道这个对话框的提示是开玩笑的对吧,即使你重新装一遍软件又怎样呢?可能其他的软件又不能运行了,怎么破? 你再重装系统试试。

 

微软的共享链接库隔离说白了就是要减少软件对系统的依赖性。但微软做了这么多年都没有做到彻彻底底的隔离。

但到了2013年Docker做到了。他用了巧妙的方式将软件和依赖的文件(环境)封装成包(镜像)。当我看到这种方式来解决软件交付问题的时候,仿佛感到一丝带着情感的风吹到我的心坎里一样!“Docker太TM了解我们这帮开发者了”。当我将这种方式(思想)传达给运维兄弟的时候,运维兄弟迷茫的双眼顿时发出一道闪电,恶狠狠的扔出来一句: “我 *和谐和谐*再也不用一次次折腾环境了!”

2.隔离

新技术都是在旧有技术上“生长”出来的,Docker最早基于LXC技术并进行技术革新。但任何技术的演化都与其当时所处的时间点是有关系的。2013年虚拟化技术正在逐步成熟,处于快速增长期,业界都在围着虚拟化技术来争抢市场份额。目的是为了抓住云计算这杆大旗。

但虚拟化技术是“生长” 在物理设备上的技术。它本质上是优化物理设备的使用效率。它没有抓住云计算的要害。但以Docker为代表的容器技术的出现,它与虚拟化技术完全不是在一个维度上的产品。容器技术解决的是软件交付效率和成本的问题,它直达了用户的最终诉求。云计算的最终目的不就是为了提升产品的交付效率,降低交付成本吗?虚拟化技术提供土壤,容器技术才得以开花结果!

既然是隔离,那么容器技术的隔离只需要保证软件和主机之间的隔离就可以了。谈什么隔离性不好,拿容器当虚拟机用的同学们可能还需要调整下思路。
任何事物都有其适用性,技术也是如此,“不要因为手里拿把锤子,看什么都像钉子。”

3.发布

截至目前,镜像仓库可以说是Docker最伟大的发明!他将镜像以代码仓库的形式进行版本管理,并支持通过Push/Pull的方式来发布和分发镜像。它为软件的交付提供了载体。

我们已经感受到了代码管理和分布式开发的便利,镜像仓库为我们提供了软件的版本管理和全球分发。想想我们以前经历,以及正在经历的获取软件的方式吧。你用或者不用,镜像仓库就在那里。

额外说一句,那次全球的docker大罢工对企业生产环境会造成影响,尤其是前一篇文章作者说的互联网金融公司的场景,我觉得这个问题大家看看就好,这应该是作者开的玩笑。

我们的奋斗史【简短且主观】

13年初,我们开始接触Docker。Docker在刚推出时虽然还是个带着实验性质的产品,但完全可以进行完整的测试。请注意这里面的完全和完整两个词,Docker虽是个新鲜货,但是实践证明测试环境下是没有问题的,所以我们尝试将其用在生产环境下。

2014年初,公司内部自行研发出了一套容器管理系统,使用在内部开发和部分服务的生产环境中,又一次证明生产环境下也是没有问题的。(注:们在2014年3月份已经将容器应用到生产环境中, 当时Docker的版本是0.9.0 ,我们生产环境的规模是4台2U的惠普服务器,32G内存。没有发生任何线上事故。)

2015年4月我们从之前的公司出来创业,三年的落地经验和不断迭代迭代的产品进行商业化运作,最终面向用户的是产品基于容器技术的应用管理平台。我们为什么能放弃现有的一切,投身于才刚刚出现2年的技术来创业呢?

一是因为我们看到了未来的发展方向,发现了另外一个维度的市场。容器技术能真正发挥云计算‘简捷高效‘的特点。

二是考虑到还有很多在努力填坑的朋友和公司,为了让他们更快的享受云计算和容器技术带来的红利(《一部失败史》恰恰验证了我们的这个想法)。

结语

只要有解决问题的思想,能用钱解决的问题都不是技术问题。

K8S中文社区微信公众号
分享到:更多 ()

评论 抢沙发

评论前必须登录!