“云化”新技术时代下的容器技术应用研究
2021-09-14何莉孙雅妮王海沛
何莉 孙雅妮 王海沛
摘要:21世纪,以ABC(A:人工智能,B:大数据,C:云计算)形成的新业态,新体系,新技术为代表的新互联网的运行生态模式,使得中小企业上云已是常态化事件。其中云原生技术,容器技术的出现使得DEVOPS出现了新的解决方案,为运维和开发之间的新建了一座桥梁,从此其快速的部署方式为上层用户服务。该论文是以云计算技术中的容器技术为研究对象,研究分析了容器在目前大的互联网背景下的应用特点以及与传统虚拟化技术的主要区别。
关键词:容器技术;传统虚拟化技术;研究分析
1 容器技术概述
随着新技术不断冲击,不断迭代更新,使得云计算技术已经成为现在以及未来技术当中的新基石,并且已经纳入国家的新的基础设施建设当中。面对中小企业上云的不断增长,面对庞大的市场内在需求,我国的云计算产业也在蓬勃发展,其云原生的Docker容器技术也在云服务平台中被大量使用[1-2]。
容器技术是继传统虚拟化技术(VM虚拟机为方案)发展之后的一种新型虚拟化技术解决方案,是云服务模式的一种新的PAAS。容器技术是一种轻量级内核的操作系统层虚拟化技术,进程资源的隔离和管理控制技术的解决方案主要是通过NameSpace和Cgroup实现。
容器之间资源独立,互相隔离, 主要是基于细粒度的资源隔离为基础,将业务资源对底层资源的利用率得到最大值。容器技术解决方案主要应用场景之一微服务领域,为微服务提供了良好的运行环境,大大提升了对微服务的运维管理效率,其中容器技术的主流代表Docker是容器技术解决方案典型的代表,相比較以虚拟机为单位的解决方案的技术更趋向于标准化和归一化。
代表性方案Docker技术,助推了容器技术的发展,Docker最初是DotCloud公司的内部发起的一个项目,主要是做云服务的PAAS层服务,该服务当时云服务领域当中的一次革新,使得云服务解决方案有了新鲜的血液,底层资源的利用率突破了新高。DOCKER的核心思想是利用扩展的LINUX容器方案实现一种轻量化的虚拟化解决方案,实现将服务器上层的服务(app)打包、封装、集成、标准化供用户使用,使得服务的部署变得简单化和智能化,继而解决和服务于开发人员与运维人员[3-4]。
Docker是C/S的架构,Docker客户端DOCKER Daemon(守护进程)进行交互,DAEMON负责构架、运行和发布容器。客户端和服务端运行在同一个系统中,也可以连接远程的DAEMON,如图1所示(图来自于Docker官网)。
Docker作为一个虚拟环境容器服务,其实现的思想主要为解决DEVOPS(开发+运维)之间的故事,Docker可以将开发人员的代码、运行环境、配置文件共同打包并发布,并且跨平台运行。实现运维和开发的一键化部署,到处运行。
2 Docker容器技术主要包含三要素:镜像,容器和仓库
镜像(IMAGE)是一个只读镜像模板文件,是基于分层文件系统的思想实现[5]。Dockerfile指令定义了Docker镜像的文件内容。Docker镜像的定义是从底层的基础镜像(BaseImage)开始,逐层开展的。镜像构建实际上就是安装、配置和运行的过程,镜像的实现机制主要基于分层文件系统的原理机制。Docker镜像基于UNIONFS把以上过程进行分层(Layer)存储,便于镜像的更新,只需更新变化部分的内容。
容器是一个镜像运行中的实例,是动态的中的镜像,容器由镜像创建,运行用户指定的指令或者Dockerfile定义的运行指令,可以将其启动、停止、删除,而这些容器是相互隔离的(独立的进程),互不可见。
仓库:Docker仓库是Docker镜像存储的地方,称为Docker镜像仓库,镜像仓库注册服务器存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(Tag),镜像通过标签识别版本。Docker仓库分为公有仓库和私有仓库。最大的公有仓库是DockerHub,Docker hub存放了数量庞大的镜像供用户下载。由于DOCKER HUB的服务器在国外,访问、下载比较慢,因此国内多家公司将Docker HUB中的镜像完全复制了一份,由此国内用户获取镜像速度加快。比如我们经常用到的国内镜像仓库:阿里云、网易云等。
Docker三要素三者之间的关系:OCKER镜像是静态的文件,容器是运行中的镜像,仓库是存储镜像的地方。
3 容器编排
在多主机的集群环境中对容器的生命周期管理,就需要容器编排工具,其Docker Compose是Docker容器进行编排的工具,定义和运行多个容器的应用,可以以一条命令启动多个容器。采用Docker compose工具代替了shell脚本的集中化管理多个容器的工具。
Docker Compose是Docker官方旗下的一个开源项目,可以批量化管理多个容器的载体平台,管理的机制是将任务代码写入到一个yaml文件当中,该文件中的所有容器通过服务Services来定义,然后使用Docker -Compose脚本来启动、停止、重启应用和应用中的服务以及所有依赖服务的容器,适用于运行多容器的场景。
4 Docker的优势
Docker与传统虚拟化技术对比:
Docker作为云计算当中的一种轻量化的虚拟化解决方案,与KVM、VMwareVSphere等主流虚拟化技术在实现原理方面有很大的不同。传统虚拟化解决方案的实现是以虚拟机(VM)为单位,其技术可以直接作用于裸金属层面,也可以寄居在宿主机的操作系统层面,也可以集成在内核态当中,而容器Docker技术的实现是直接安装在宿主机的操作系统层面,与宿主机共享内核,并且最终实现的服务是以打包、集成、封装好的镜像文件,镜像文件为用户提供所需的进程服务,针对性很强,可实施性很简单,为互联网界的部署,运维和开发开通了一条绿色通道。下表展示了传统虚拟化解决方案与容器技术Docker的异同。