如果说主机时代大家拼的是单个服务器物理性能(如CPU主频和内存),那么在云时代,最为看重的则是凭借虚拟化技术所构建的集群处理能力。
伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中。从20世纪60年代IBM推出的大型主机虚拟化,到后来以Xen、KVM为代表的虚拟机虚拟化,再到现在以Docker为代表的的容器技术,虚拟化技术自身也在不断进行创新和突破。
什么是Docker
Docker开源背景
Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最初发起者是dotCloud公司。
Docker项目已加入了linux基金会,并遵循Apache2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。在linux基金会最近一次关于“最受欢迎的云计算开源项目”的调查中,Docker仅次于2010年发起的Openstack项目,并仍处于上升趋势。
Docker的构想是要实现“Build,Ship and Run Any App,Anywhere”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件“一次封装,到处运行”的目的。
linux容器技术—巨人的肩膀
跟着大部分新兴技术的诞生一样,Docker也并非“从石头缝里蹦出来的”,而是站在前人的肩膀上,其中最重要的就是linux容器(linux Containers,LXC)技术。
从Linux容器到Docker
简单地讲,可以将Docker容器理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止都十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。
有理由相信,Docker技术会进一步成熟,将会成为更受欢迎的容器虚拟化技术实现,并在云计算和DevOps等领域得到更广泛的应用。
Docker容器虚拟化的好处
Docker提供了一种聪明的方式,通过容器来打包应用,解耦应用和运行平台。意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否同一类型的平台。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。
Docker在开发和运维中的优势
更快的交付和部署
更高效的资源利用
更轻松的迁移和扩展
更简单的更新管理
Docker与虚拟机的比较
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千个容器 | 一般为几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |