论文部分内容阅读
摘 要:计算资源的虚拟化技术是云计算不可或缺的关键技术之一,它的目标在于提高云平台的性能、可用性,使资源利用最大化,从而实现更高的利润。计算资源的虚拟化从一开始的虚拟机技术,到Linux容器技术,再到现在火热的Docker技术。本文分析了三种资源虚拟化技术的优缺点的基础上,对三种技术进行了对比分析,并对产业发展做了简单的预测。
关键词:虚拟机;容器;Docker;虚拟化;云计算
当前,在云计算领域,虚拟化技术发展日新月异,相关技术也不断突破。计算资源的虚拟化,在近年来的云计算技术发展浪潮中,也涌现出了新的思想和技术,容器(Container)和Docker就是在这样的背景下提出来并发展起来的。本文对虚拟机、容器和Docker技术,做一个简单的对比分析。
虚拟机技术是计算资源虚拟化过程中最先出现的技术,它是在物理主机的操作系统之上,通过虚拟机管理软件,构建虚拟机,虚拟机具有一台主机可以拥有的全部虚拟硬件。当或者然,随着虚拟机技术的发展,目前主流上把物理主机操作系统和虚拟机管理软件合并成一层薄的管理层,就是Monitor或者Hyper-visor,这大大提高了虚拟化的效率。
在云计算还不像现在这么火热之前,人们接触虚拟机还主要是为了满足对于同时使用双(多)系统的需求。在云计算引入虚拟化概念之后,虛拟机技术以其如下优点,成为云计算领域的当然选择。以至于VMware这样靠虚拟机起步的公司,在多年摸爬滚打之后,成为云计算领域中重要的方案提供商。
虚拟机技术的优点概括如下:
完全的虚拟化环境,每个虚拟机都有完整的操作系统、CPU、内存和存储器资源。不同虚拟机之间是完全隔离的。
虚拟机可以使用与宿主不同的操作系统。
由于虚拟机之间很好的隔离机制,在云计算环境中,使用虚拟机技术可以提供最高的安全级别。
但,随着应用规模的扩大,虚拟机技术的一些缺点也暴露出来,主要有如下几点:
由于其实现机制要求虚拟机指令的执行,需通过宿主机操作系统转换后才最终在硬件上执行,导致虚拟机效率低下,运行慢。这是最为人诟病的缺点。
此外,虚拟机在启动的时候,要加载完整的操作系统,初始化虚拟资源,导致启动速度漫长,这在云计算环境中,也是一大弊端。
正是虚拟机技术存在这些缺点,便有了技术进步的动力,容器技术开始被谈论、实现并且发展起来。
容器(Linux Container)其实并不是一个新的东西,在Linux界已经存在多年了,它使用linux内核里名字空间(namespace)和控制组(control group)两项技术,把特定的进程有效的隔离起来。构造一个可以提供给程序运行的环境。
容器看起来像虚拟机:有自己的运行空间,来运行它的进程,也可以有自己的网络接口。容器可以直接用在裸机上,也可以作为虚拟机之上的第二层容器引擎。容器有如下优点:
它可以看作是轻量版的虚拟机,虚拟的基本功能在容器上也都能实现。
裸机linux容器让每个实例在独立的用户空间运行,多个实例可以共享宿主服务器上的操作系统、内核版本和文件系统等。这使得其资源利用效率非常高。
此外,容器不需要启动一个完整的操作系统,因而大大降低了服务器开销,并且可以快速启动。
然而,容器也有其自身的缺点,如下:
容器最大的优点也恰恰是主要缺点,由于各个容器共享服务器节点的内核,这就无法在同一个服务器上的不同容器运行不同的操作系统。如果服务器上运行的是linux,容器就只能是linux。
当然,由于容器技术只是在近年才发展起来,在生产环境中,并没有大规模应用。
Docker,Docker是一个开源的基于Linux container的高级容器引擎,这是介于容器和虚拟机之间的一种技术。与容器不同,docker在宿主操作系统之上运行Docker引擎;与虚拟机不同,docker并不运行虚拟机操作系统。这样Docker既具备了容器的效率,同时又解决了容器只能运行宿主操作系统的局限。
容器技术在十多年前出现的时候,仅仅只是一个虚拟化技术,只是解决了Run的问题,在当时,看不出比KVM、XEN有太多的优势。直到2013年,Docker的出现,它首次提出了Build、Ship和Run的概念,将容器技术向IT产业链条的上游和下游进行了延伸。从软件的使用领域,延伸到软件的生产领域,以及软件的发布领域。同时,借助DevOps极大提高了软件领域的生产率。
但是,Docker也不是没有缺点,它毕竟是基于容器的,容器上存在的缺点,它一样存在。其中最大的缺点就是不够安全,还不能在生产环境中部署。
此外,产业界还没有接受一容器镜像为主要形态的软件发布模式,应用的执行也都还没有全部基于容器,分布式以及微服务架构也还没有普及。
然而,对比这三种技术之后,进一步想象他们的发展前景,是一件有意思的事。Docker和它所基于的容器技术,可能会有三种道路:一是取代传统的虚拟机,容器技术可以往IAAS层发展,从而取代以虚拟机技术为主的IAAS;二是容器技术往上走,取代传统的PAAS,随着IAAS、PAAS和SAAS的界限越来越模糊,容器技术取代PAAS应该是一个必然的趋势;容器技术的第三条路,就是私有云的容器服务,这个不在这里多说。
在IT产业界,有两条不变的原则:简单的东西,永远是最有生命力的;客户永远只会关注他的业务,不会关心除此之外的任何东西。从这两点出发,有理由相信,Docker会是未来IT技术发展的方向。
参考文献:
[1]浙江大学SEL实验室.Dockers——容器与容器云.北京:人民邮电出版社,2015/9
[2]本刊编辑部.红帽变革Linux 容器企业市场[J].软件和信息服务,2015,(第4期)
[3] 刘思尧,李强,李斌.基于Docker技术的容器隔离性研究[J].软件,2015,(第4期).
[4] .Docker容器技术为何如此重要?[J].网络运维与管理,2015,(第11期).
[5] 石磊,邹德清,金海. Xen虚拟化技术. 武汉:华中科技大学出版社, 2009.05.
[6] 杨保华,戴王剑,曹亚仑编著. Docker技术入门与实战. 北京:机械工业出版社, 2015.01.
关键词:虚拟机;容器;Docker;虚拟化;云计算
当前,在云计算领域,虚拟化技术发展日新月异,相关技术也不断突破。计算资源的虚拟化,在近年来的云计算技术发展浪潮中,也涌现出了新的思想和技术,容器(Container)和Docker就是在这样的背景下提出来并发展起来的。本文对虚拟机、容器和Docker技术,做一个简单的对比分析。
虚拟机技术是计算资源虚拟化过程中最先出现的技术,它是在物理主机的操作系统之上,通过虚拟机管理软件,构建虚拟机,虚拟机具有一台主机可以拥有的全部虚拟硬件。当或者然,随着虚拟机技术的发展,目前主流上把物理主机操作系统和虚拟机管理软件合并成一层薄的管理层,就是Monitor或者Hyper-visor,这大大提高了虚拟化的效率。
在云计算还不像现在这么火热之前,人们接触虚拟机还主要是为了满足对于同时使用双(多)系统的需求。在云计算引入虚拟化概念之后,虛拟机技术以其如下优点,成为云计算领域的当然选择。以至于VMware这样靠虚拟机起步的公司,在多年摸爬滚打之后,成为云计算领域中重要的方案提供商。
虚拟机技术的优点概括如下:
完全的虚拟化环境,每个虚拟机都有完整的操作系统、CPU、内存和存储器资源。不同虚拟机之间是完全隔离的。
虚拟机可以使用与宿主不同的操作系统。
由于虚拟机之间很好的隔离机制,在云计算环境中,使用虚拟机技术可以提供最高的安全级别。
但,随着应用规模的扩大,虚拟机技术的一些缺点也暴露出来,主要有如下几点:
由于其实现机制要求虚拟机指令的执行,需通过宿主机操作系统转换后才最终在硬件上执行,导致虚拟机效率低下,运行慢。这是最为人诟病的缺点。
此外,虚拟机在启动的时候,要加载完整的操作系统,初始化虚拟资源,导致启动速度漫长,这在云计算环境中,也是一大弊端。
正是虚拟机技术存在这些缺点,便有了技术进步的动力,容器技术开始被谈论、实现并且发展起来。
容器(Linux Container)其实并不是一个新的东西,在Linux界已经存在多年了,它使用linux内核里名字空间(namespace)和控制组(control group)两项技术,把特定的进程有效的隔离起来。构造一个可以提供给程序运行的环境。
容器看起来像虚拟机:有自己的运行空间,来运行它的进程,也可以有自己的网络接口。容器可以直接用在裸机上,也可以作为虚拟机之上的第二层容器引擎。容器有如下优点:
它可以看作是轻量版的虚拟机,虚拟的基本功能在容器上也都能实现。
裸机linux容器让每个实例在独立的用户空间运行,多个实例可以共享宿主服务器上的操作系统、内核版本和文件系统等。这使得其资源利用效率非常高。
此外,容器不需要启动一个完整的操作系统,因而大大降低了服务器开销,并且可以快速启动。
然而,容器也有其自身的缺点,如下:
容器最大的优点也恰恰是主要缺点,由于各个容器共享服务器节点的内核,这就无法在同一个服务器上的不同容器运行不同的操作系统。如果服务器上运行的是linux,容器就只能是linux。
当然,由于容器技术只是在近年才发展起来,在生产环境中,并没有大规模应用。
Docker,Docker是一个开源的基于Linux container的高级容器引擎,这是介于容器和虚拟机之间的一种技术。与容器不同,docker在宿主操作系统之上运行Docker引擎;与虚拟机不同,docker并不运行虚拟机操作系统。这样Docker既具备了容器的效率,同时又解决了容器只能运行宿主操作系统的局限。
容器技术在十多年前出现的时候,仅仅只是一个虚拟化技术,只是解决了Run的问题,在当时,看不出比KVM、XEN有太多的优势。直到2013年,Docker的出现,它首次提出了Build、Ship和Run的概念,将容器技术向IT产业链条的上游和下游进行了延伸。从软件的使用领域,延伸到软件的生产领域,以及软件的发布领域。同时,借助DevOps极大提高了软件领域的生产率。
但是,Docker也不是没有缺点,它毕竟是基于容器的,容器上存在的缺点,它一样存在。其中最大的缺点就是不够安全,还不能在生产环境中部署。
此外,产业界还没有接受一容器镜像为主要形态的软件发布模式,应用的执行也都还没有全部基于容器,分布式以及微服务架构也还没有普及。
然而,对比这三种技术之后,进一步想象他们的发展前景,是一件有意思的事。Docker和它所基于的容器技术,可能会有三种道路:一是取代传统的虚拟机,容器技术可以往IAAS层发展,从而取代以虚拟机技术为主的IAAS;二是容器技术往上走,取代传统的PAAS,随着IAAS、PAAS和SAAS的界限越来越模糊,容器技术取代PAAS应该是一个必然的趋势;容器技术的第三条路,就是私有云的容器服务,这个不在这里多说。
在IT产业界,有两条不变的原则:简单的东西,永远是最有生命力的;客户永远只会关注他的业务,不会关心除此之外的任何东西。从这两点出发,有理由相信,Docker会是未来IT技术发展的方向。
参考文献:
[1]浙江大学SEL实验室.Dockers——容器与容器云.北京:人民邮电出版社,2015/9
[2]本刊编辑部.红帽变革Linux 容器企业市场[J].软件和信息服务,2015,(第4期)
[3] 刘思尧,李强,李斌.基于Docker技术的容器隔离性研究[J].软件,2015,(第4期).
[4] .Docker容器技术为何如此重要?[J].网络运维与管理,2015,(第11期).
[5] 石磊,邹德清,金海. Xen虚拟化技术. 武汉:华中科技大学出版社, 2009.05.
[6] 杨保华,戴王剑,曹亚仑编著. Docker技术入门与实战. 北京:机械工业出版社, 2015.01.