以Docker为代表的新一代容器技术价值初探

Posted 疯云时代

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以Docker为代表的新一代容器技术价值初探相关的知识,希望对你有一定的参考价值。

Docker并不是第一个容器技术,Solaris Zones,FreeBSD Jails和OpenVZ都是类似的东西,可是Docker为什么在这么短的时间内红得发紫呢?


首先看看这几个东西是如何定义的:

https://en.wikipedia.org/wiki/Solaris_Containers

Solaris Containers (including Solaris Zones) is an implementation of operating system-level virtualization technology for x86 and SPARC systems...


https://en.wikipedia.org/wiki/FreeBSD_jail
The FreeBSD jail mechanism is an implementation of operating system-level virtualization that allows administrators to partition a FreeBSD-based computer system into several independent mini-systems called jails.


https://en.wikipedia.org/wiki/OpenVZ
OpenVZ (Open Virtuozzo) is an operating system-level virtualization technology based on the Linux kernel and operating system.


无一例外,它们全是操作系统级别虚拟化,目的是在一个操作系统上分隔出多个逻辑分区,Solaris叫Zone,FreeBSD叫Jail,OpenVZ叫Container。相对于独立于OS的硬件虚拟化(即服务器虚拟化,如vSphere,Hyper-V和KVM等)更经济但是欠缺灵活性和安全性。操作系统级别虚拟化只提供一变多的能力,相当于服务器虚拟化的第一阶段,因此当服务器虚拟化发展到第二阶段即资源整合与自动化阶段后,操作系统虚拟化就没有什么竞争力了。


今天以Docker为代表的新一代容器技术仍然是以LXC (Linux Containers)
技术为基础,但是却与上一代容器技术有本质的不同,它是应用级别的虚拟化而不是操作系统级别的虚拟化。封装是它的核心特性,也是它受到热捧的根本原因。要理解它的价值,我们先来看一看Docker的定义:

An open platform to build, ship, and run any app, anywhere。首先它是一个平台服务,类似于以前的PaaS,可以构建起一个完整的生态系统;其次它可以让应用在任何支持Docker的系统上运行,而不用担心因为环境差别而导致的兼容性问题。最后它可以服务于软件的整个生命周期,从开发、测试到投产。这和当年的服务器虚拟化是何等的类似,如果说服务器虚拟化使IaaS成为可能,那么Docker将使PaaS成为可能,我的意思是有了新一代容器技术,PaaS才是真的PaaS。Docker虚拟化的层次更高,比服务器虚拟化有更好的跨平台能力,完全可以支持应用在不同的硬件平台、虚拟化平台和云平台之间无缝地迁移。


现在Docker官网上对Docker的定义更新成了An open platform for distributed applications for developers and sysadmins,强调了对分布式应用和DevOps的支持。但个人认为还是原来的定义更能体现Docker的独特之处。


上面还是技术层面的分析,那么用Docker与不用Docker对一个企业来说有什么区别呢?Docker毕竟只是一个工具,它怎样帮助IT团队应对挑战改进工作?怎样帮助一个企业创造价值?


封装太重要了,Docker的成功靠的就是封装,Docker的Image(类似于服务器虚拟化中的模板)是通过Dockerfile来创建的,这个Dockerfile就是一个描述文件,或者说是一个菜谱,按照这个菜谱,把原材料做成了菜,这就是Image,这个过程就是封装。有了这个封装,一切相关操作就都变简单了。集中存储于仓库(Registry)的这些Image可以在各种平台上被实例化(基于Image生成Container)。这样就很好地解决了可移植性问题,它的跨平台能力比虚拟机更强大,而且更轻量。这种能力是应用混合云和实现DevOps的基础。有了这种能力,意味着企业拥有了一个极具扩展性、弹性和敏捷性的业务支撑平台。


对于开发团队而言,应用的运行环境实现了透明化,搭建开发测试环境简便快捷,团队工作环境的一致性得到保证。


对于运维团队来说,应用的运行环境实现了标准化,应用的弹性可以很好地满足业务的需要。应用的部署过程被简化,不需要特殊处理软件模块之间的依赖关系,快速部署不再是挑战,也不需要应对兼容性所导致的不确定性,资源的利用率也得到了提升。


开发和运维团队之间的合作将更加顺畅,举一个大家都熟悉的例子,你在苹果手机上安装软件有多么简单,使用Docker部署应用就有多么简单。这就是封装的好处,软件工程师再也不需要被那种类似“Works for me(在我这里是好的,为什么到了你那里就不行)”一类的问题困扰了。


需要注意的是,Docker并不完美,微服务简化了应用程序的开发与交付,但是也大大增加了管理工作量;Docker环境共享OS可以降低开销,但也增加了安全风险;Docker对底层资源的管理和调度能力也尚有欠缺。这些不在本文的讨论范围之内,我会另起篇章进行讨论。


[本文完]

以上是关于以Docker为代表的新一代容器技术价值初探的主要内容,如果未能解决你的问题,请参考以下文章

阿里云叔同:以容器为代表的云原生技术,已经成为释放云价值的最短路径

基于容器云的微服务架构实践

云原生中间件的下一站

Docker+k8s 容器云建设中 10 个常见难点

Docker Hub 使用初探

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