Docker, IT技术的又一次变革

作者:张言,精灵云产品总监,虚拟化领域专家,曾任IBM和VMWare资深产品经理,对IaaS/PaaS产品有丰富的经验,实际参与国内多IDC中心PaaS平台搭建工作。

  云计算刚刚问世的时候,很多人都认为它的好处仅限于节约成本。但很快大家就开始认识到云计算的强大,以及它对整个IT行业产生的深远影响,在云计算的推动下,IT行业发生了深刻的变革。云计算将基础设施作为一种动态的、可自适应的资源提供给IT企业,一举解决了困扰业界许久的灵活性和响应性问题。随着云计算的兴起,像“cloud-native”和“cattle not pets”之类的术语行话也纷纷出现,它们都表达了一个意思,那就是整个跟云计算相关的IT领域都需要彻底改变现有的意识形态,不能再像过去一样看待基础设施组件,因为在云计算模式下,基础设施已经不再是一个既庞大又昂贵,而且专业得令人难以企及的怪物,它不再需要繁琐的手动维护,也不再难以改换。

  如果说云计算导致了IT业的变革,那么容器技术的出现则将这场变革提升了新的高度。作为一种容器技术,Docker已经以迅雷不及掩耳之势,迅速占领了业界的想象空间。容器一开始出现的时候遇到的情况跟云计算差不多,大家都以为容器技术只不过是针对当前存在的封装和部署方面的问题提供了一个更便捷的解决方案而已。但实际上,容器虚拟化技术并不仅仅是一项更好的解决方案,它给我们的思维模式带来的变革要比云计算更为深远。

  云计算改变了我们对“机器”的管理模式,但并未从本质上改变我们管理的对象。但容器就不一样了,其优越性远超传统技术。借助容器技术,用户就能真正摆脱对服务器和操作系统的依赖,从而专注于应用及其组件本身。甚至可以这么说,容器技术和软件微服务架构代表了面向对象的组件式应用开发思想。

  Docker发展十分迅速,用气势如虹来形容也不为过,业内的关注点很快就从一些基础问题变成了Docker是否可以满足企业级的运营需求。在各种博客上关于Docker的论战也很火爆,有人开博记述利用Docker进行产品开发的相关经验,也有人长篇大论地阐述Docker不能满足企业级开发的种种理由,唇枪舌战不亦乐乎。但双方辩友都忽略了一个问题,那就是技术推广普及的本质到底是什么。这就好比船只一样,虽然船能够在海上航行,但人类还是得想好要怎么驾船航海。容器技术解决了很多问题,但也提出了很多新的问题,这一点和云计算非常相似。人们对容器技术所存的疑问包括了架构、运营、组织和理念等多个方面。

凭借容器技术,很多事情都由不可能变成了可能,用户甚至不需要亲自出马,就能解决这些事务。在意识到容器技术的强大之后,一些人在兴奋之余迫不及待地踏上了将容器技术投入实战的探索之旅,然而这一过程却要麻烦得多。在使用过程中各种问题接踵而至,比如:

·容器怎样实现跨操作系统的通信,又是如何实现跨网络边界通信的?

·容器该怎样监控?

·在实际应用中,如何将容器作为组成部分整合到大型系统中去?此类复合型系统该如何管理?

  为了解决上述问题,业界也出现了各种解决方案。比如Packer之类的封装工具就可以在即用即抛型基础设施上实现自动配置。而Kubernetes之类的集群管理系统则可以在原始的容器上实现复制、运行状态监控以及网络管理。作为平台即服务类的产品,Cloud Foundry和OpenShift也在自己的架构模型中采用了容器技术。

  虽然这些更高端的系统部分地解决了容器部署初期产生的问题,但它们也暴露出了自身存在的新问题。现在用户要面对的不是如何对容器进行管理和编排,而是如何对容器管理、部署及运维工具链进行管理和组装。

  如此一来,用户就陷入了无穷递归的困境。这种恶性循环到何时才能结束,目前笔者还无法给出答案。我们举个例子来说,如果要弄清楚“在Mesos上运行Kubernetes”到底是个什么意思,用户至少要掌握三种以上全新的技术和操作模式,并将其融会贯通到一起,其难度可想而知。

  这些都还不算什么,现在更重要的问题是,很多机构已经开始着手将容器技术纳入到其业务架构、组织模式和理念体系之中。然而,这条路只能由用户自己独自走完。在这一过程中,用户要经历不断的变革,以求适应新的形势。这条路到底该怎么走,终点在何方,目前都还未可知,但可以肯定的是,其走向在很大程度上要取决于企业自身的经历、能力和企业文化。

  技术的重大革新是一个很复杂的过程。其前景无法预测,也无法简单地加以规划。就像我们开发产品一样,要实施新的技术,也需要同样精简敏捷的技巧。所以我们应该问的不是“Docker是否可以满足企业级的运营需求”,而是“容器技术会给企业的组织架构和业务模式带来怎样的改变,这些变动又是否会造成困扰”?要回答这个问题,只有在实际应用中加以实践,并从反馈信息中吸取经验教训。这是一个过程,而且涵盖的范围非常广泛,早就不是纯技术领域能解决的问题了。

  像云计算和容器虚拟化这样的颠覆性技术给整个IT业带来的影响是全方位的。如今计算资源的规模堪称成千上万,用户可以在很短的时间内获得大量资源,也可以快速销毁资源,不像以前,要部署计算资源既费时又费力,往往需要很长的周期,而且规模也小。在这样的形势下,传统的管理手段已经无法满足现有需求。因此,不管是配置管理系统,还是配置与变更管理流程,都需要重新调整。

  新的管理工具和管理流程固然必要,但还不够。在新的形势下,技术人员不仅要适应新的思维模式,重新认识系统的概念,还要学习用新的系统解决问题。要将Docker投入企业级应用,光从技术角度提高程序的健壮性和安全性还不够,还需要在人员配备、招聘和培训方面下功夫。决定一个企业是否能够适应变革的关键因素往往并不是新技术本身,而是企业能否吸纳了解该技术潜在意义、并且能够在此基础上开展运营的人才。

  笔者相信,容器技术的影响范围终将超越IT领域,容器技术必将成为一种强大的推动力,促使整个企业从根本上发生改变。如何让变革的规模变小、速度变快、发生得更频繁,正是微服务架构和容器技术的价值所在。要想充分发挥这两项技术的作用,IT企业就必须从公司架构和组织形态两方面做出改变。这种连锁式的转变过程又会反过来作用于整个企业,赋予企业更强大的能力,帮助企业更迅速、更敏捷地为社会提供信息服务。

  和容器管理系统一样,新的组织结构在解决原有问题的同时,也会衍生出新的问题。打个比方来说,如果企业为了提高自身的灵活性,决定采用Holacracy模式来管理整个公司的话,那么该企业也同样会经历一个转型过程。组织架构的转变也要经历实践、失败和变通的过程,这一点和技术变革是完全一样的。

  在讨论Docker或其他容器技术的企业级推广问题时,我们首先要弄清楚一件事情:新技术只不过是一根导火线,随之而来的变革要比新技术本身更为庞杂,而且是一个长期的过程。我们的目光不能只局限在容器技术上,而要从整个社会-技术系统的层面上来分析容器技术的利弊。在应对充满变革和不确定性的未来时,我们必须尽力避免那种非成即败的单向思维模式。从这个意义上来说,容器技术其实跟DevOps、精益生产和其它的企业转型运动没什么不同。

时间: 2024-11-04 03:36:48

Docker, IT技术的又一次变革的相关文章

当公有云Azure拥抱Docker容器技术

本文转载至 http://3387405.blog.51cto.com/3377405/1598977 预见未来看似是一件不太可能的事情,然而现在企业科技高速发展的态势完全超乎想象. 就在几周前InfoWorld的主编Eric Knorr在引流潮流专栏发表一篇非常火爆的关于2015年以及之后的九大科技企业趋势,在其中非常清晰的指出这九大潮流中头两位就是公有云的胜利和容器技术的狂热.从这里我们很容易理解为什么最近Scott Guthrie 发表并且Jason Zander 再次阐述与Docker合

Docker基础技术:Linux Namespace(上)

导读 时下最热的技术莫过于Docker了,很多人都觉得Docker是个新技术,其实不然,Docker除了其编程语言用go比较新外,其实它还真不是个新东西,也就是个新瓶装旧酒的东西,所谓的The New “Old Stuff”.Docker和Docker衍生的东西用到了很多很酷的技术,我会用几篇 文章来把这些技术给大家做个介绍,希望通过这些文章大家可以自己打造一个山寨版的docker.先从Linux Namespace开始. 简介 Linux Namespace是Linux提供的一种内核级别环境隔

Docker 基础技术:Linux Namespace(下)

导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主要想向大家介绍Linux的User和Network的Namespace User Namespace User Namespace主要是用了CLONE_NEWUSER的参数,使用了这个参数后,内部看到的UID和GID已经与外部不同了.默认情况下容器没有的UID,系统自动设置上了最大的UID655

如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

Rex-Ray 是一个优秀的 Docker volume driver,本节将演示其安装和配置方法. Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上,安装方法很简单,在需要使用 Rex-Ray driver 的主机 docker1 和 docker2 上运行如下命令: curl -sSL https://dl.bintray.com/emccode/rexray/install | sh - 然后创建并编辑 Rex-Ray 的配置文件 /etc/rexray/c

Docker基础技术:Linux Namespace(下)

在 Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主要想向大家介绍Linux的User和Network的Namespace. 好,下面我们就介绍一下还剩下的这两个Namespace. User Namespace User Namespace主要是用了CLONE_NEWUSER的参数.使用了这个参数后,内部看到的UID和GID已经与外部不同了,默认显

新书发布《每天5分钟玩转Docker容器技术》

后台不时收到关于纸质版教程书籍的询问,今天终于可以给大家一个交代了. <每天5分钟玩转Docker容器技术>现已在各大书城上架. 比较了一下,目前京东上最实惠:https://item.jd.com/16936307278.html 下面回答几个大家可能关心的问题. 1. 这本书包含哪些内容? 按照年初的计划,整个教程会涵盖容器生态系统中最重要的容器技术和平台技术. 由于版面篇幅的限制,这次出版的<每天5分钟玩转Docker容器技术>内容就是容器技术部分,具体内容如下: 平台技术部

万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容器的日志. Fluentd 是一个开源的数据收集器,它目前有超过 500 种的 plugin,可以连接各种数据源和数据输出组件.在接下来的实践中,Fluentd 会负责收集容器日志,然后发送给 Elasticsearch.日志处理流程如下: 这里我们用 Filebeat 将 Fluentd 收集到的

ELK 完整部署和使用 - 每天5分钟玩转 Docker 容器技术(90)

上一节已经部署了容器化的 ELK,本节讨论如何将日志导入 ELK 并进行图形化展示. 几乎所有的软件和应用都有自己的日志文件,容器也不例外.前面我们已经知道 Docker 会将容器日志记录到 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log,那么只要我们能够将此文件发送给 ELK 就可以实现日志管理. 要实现这一步其实不难,因为 ELK 提供了一个配套小工具 Filebeat,它能将指定路径下的日

初探 ELK - 每天5分钟玩转 Docker 容器技术(89)

在开源的日志管理方案中,最出名的莫过于 ELK 了.ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch一个近乎实时查询的全文搜索引擎.Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据. Logstash读取原始日志,并对其进行分析和过滤,然后将其转发给其他组件(比如 Elasticsearch)进行索引或存储.Logstash 支持丰富的 Input 和 Output 类型,能够处理各种应用的日志. Kiba