1.摘要:
容器中有2个重要的概念,一个是镜像(Image),另一个是容器(container)。容器即利用docker构建出来的虚拟环境,可理解为一个自给自足的LINUX环境(本文以linux环境为例),在功能上,与一个完整的linux环境基本上一致。Docker容器技术CPU、内存利用率更高,网络I/O性能更高,磁盘的读写性能也比常规的要更好,docker技术是云计算技术发展的主要方向。
云计算是一种融合了多项计算技术的以数据和处理能力为中心的密集型计算模式,其中以虚拟化,SDN和分布式存储等技术最为关键,经过多年发展,云计算已经从刚开始的发展期步入快速成长期,越来越多的企业已经开始使用云计算服务。与此同时,云计算的核心技术也在发生着巨大的变化,新一代的技术正在优化甚至取代前一代技术。Docker容器技术以其轻便、灵活和快速部署等特性队传统的基于虚拟机的虚拟化技术带来了颠覆性的挑战,正在改变着基础设施即服务(IaaS)平台和平台即服务(平台)的架构和实现。
Docker容器技术是一个风头直追OPENSTACK的云计算开源项目,关于它的热议以席卷虚拟化乃至云计算行业,业内各大厂商(AWS、MICROSOFT、IBM、vmware等)都加入了容器的行列。
2. DOCKER技术介绍
Docker是基于Go语言实现的云开源项目,诞生于2013年初。DOCKER自开源后收到广泛关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态系统。
DOCKER容器技术是近年来新兴的虚拟化技术,容器技术和虚拟化技术的实现原理,如图所示:
虚拟机技术中的虚拟机操作系统和虚拟机管理程序层在Docker中被Docker引擎层所替代。虚拟机操作系统为虚拟机安装的操作系统,它是一个完整操作系统内核;虚拟机管理程序层可以简单理解为一个硬件虚拟化平台,它在宿主机操作系统是以内核态的驱动存在的。
因为容器不需要为每个应用分配单独的操作系统,所以容器会拥有更高的资源使用效率。同时,容器实例规模更小、创建和迁移速度也更快。因此,相比于虚拟机,同等配置的硬件设备当中可以部署数量更多的容器实例。
2.1 容器性能
相比传统虚拟化技术,容器不需要为每个应用分配单独的操作系统,所以容器会拥有更高的资源使用效率。容器资源利用率明显高于虚拟机,如下图所示:
物理机容器CPU利用率是大约虚拟机的1.3倍,内存读效率是大约是虚拟机的1.3倍。磁盘I/O性能容器是虚拟机的2倍;网络I/O性能容器是VM的1.1倍,书记哭读效率容器是虚拟机的1.2倍,数据可写效率容器大约是虚拟机的1.1倍。由此可见,采用容器技术在性能上将全面超过传统的虚拟机技术。
2.2 管理能力
容器技术所提供的轻量级虚拟化实现秒级部署、弹性扩展,并高效的利用计算资源。容器镜像正逐渐成为应用交付的标准,加之迅速成长的生态系统,将会是应用发布、分享的首选方式。管理平台基本能提供控制台,容器启停、集群管理等运维管理功能,可查看容器信息、集群信息、性能信息和日志信息;支持应用快速扩展和负载均衡能力;具备故障自动恢复能力。
2.3 存储能力
容器是近年兴起的应用开发交付和运维的方式,随着应用模式的深入,已经从原先无状态为主的应用,逐渐发展到有状态的容器应用,有状态的容器应用必须要有数据持久化存储的能力。
在容器中运行的应用,应用真正需要保存的数据,可以写入持久化的数据卷。由于以微服务架构为主的容器应用多为分布式系统,容器可能在多个节点中动态地启动、停止、伸缩或迁移,因此,当容器应用具有吃觉化的数据时,必须确保数据能被不同的节点所访问。
2.4.隔离能力
Docker容器技术安全性是生产应用中必须重点考虑的问题,必须保障各个容器之间的安全隔离。目前的容器产品大多能实现以下安全功能:
(1)
可以保证容器和容器之间、容器和宿主机之间的CPU、内存、磁盘I/O的资源隔离;
(2)
可以通过SDN技术,实现不同VXLAN间的隔离;
(3)
通过镜像仓库的权限控制以及镜像校验实现镜像的安全访问。
2.5. 应用部署
Docker容器技术具有快速部署、环境一致性等特点。传统模式下,运维人员需要部署测试和身缠环境,部署工作相对比较复杂,具有很多重复工作,浪费时间。容器模式下,开发人员将部署环境形成镜像,运维以及测试人员只需获取镜像启动容器即可,减轻了工作量,节省了时间。容器镜像启动,自动服务发现与负载均衡配置,耗时约5min,虚拟机实例复制、网络配置,耗时约30~60min。因此容器极大地提供了应用部署速度。
2.6. 容器技术的形式
容器是传统虚拟技术的补充,可以在基础设施优化、DevOps等领域发挥其独有的优势,随着容器技术和生态发展逐步成熟,行业应用越来越多,容器引擎、群集管理工具将快速发展。
2.6.1 容器技术的优势
容器不需要为每个应用分配单独的操作系统,容器资源利用率明显高于虚拟机。CPU利用率、内存读写、I/O性能等均高于传统虚拟机技术。另外Docker容器技术具有启动速度更快、快速部署、环境一致性和在线业务的弹性伸缩等特性。
2.6.2 容器技术的劣势
容器技术在大规模的压力测试下的性能有待进一步的验证,容器运行维护的经验还不如虚拟机技术丰富。
2.7.应用场景
容器技术在应用场景中 主要有下列这些场景:
(1)
短连接、无状态的应用系统,非常适合容器可以根据业务量在线动态伸缩的特点;
(2)
Web服务器,应用服务器、RESTFUL API;
(3)
开发、测试、新技术试验。