- 文献综述(或调研报告):
- 容器
容器技术[1][2]是一种基于操作系统能力的隔离技术,是当下大规模集群中资源共享和隔离的重要解决方案。容器的本质,就是一组受到资源限制、彼此间相互隔离的进程,进程中可以运行一个或多个应用程序。虽然虚拟机也实现了应用程序之间的隔离,但是容器不包含自己的操作系统,也没有hypervisor层,同一台宿主机上的容器共享内核,所以比起传统的虚拟机,容器更加轻量化[3]、启动的速度更快。在同样数量的硬件设备中,可以部署更多的容器实例,因此容器技术也被广大云提供商热衷。
Linux内核已经支持容器技术十几年,而近年来一些容器管理框架的出现大大简化了容器的构建、运行和共享,比如Docker、CoreOS、Kubernetes等,使得容器技术获得了前所未有的高度关注。传统的容器技术虽然体现了良好的隔离性和轻量性,但是部署或迁移容器需要考虑操作系统或其它依赖环境是否适配,而Docker提供了一种新方案,通过将应用程序和全部依赖(包括操作系统的一部分)打包成镜像,镜像相当于静态的、可共享的模板,用户可在支持Docker的主机上根据镜像直接构建、运行容器实例,不用针对运行环境做任何适配,真正做到“一次开发,随处运行”,显著提高了在生产环境中测试、部署应用程序的速度[4]。Docker将应用程序从物理硬件中抽出来,使开发者可以降低对应用部署的关注,将注意力更加集中在应用程序的功能上[5]。此外,PaaS(Platform as a Service)作为云计算模式中的一种,致力于为用户提供应用程序打包、部署、管理的云平台,而Docker容器的特性帮助PaaS更好地提供其服务[6]。
- Docker
Docker[7]是一个开源的应用容器引擎,具备出色的隔离性和轻量性,是当下最流行的容器解决方案。
Docker架构主要包括3个部分:Docker Daemon, Docker Client和Docker Registry。Docker Daemon是一种服务器组件,是Docker最核心的后台进程,负责启动容器、终止容器、创建镜像、存储镜像以及从Registry中获取镜像等,运行在支持Docker的主机上,接收从Docker Client发送的请求。Docker Client是Docker提供的命令行工具,也是用户与Docker交互的主要方式,负责与Docker Daemon通信并将结果返回给用户。Docker Client可以与本地运行的Docker Daemon交互,也可以通过网络与部署在远程服务器的Docker Daemon相连[8]。Docker Registry是Docker的镜像仓库,负责存储、管理、分发镜像,用户可以在本地创建镜像,然后上传到镜像仓库,比如Docker Hub(世界上最大的容器镜像仓库),用户也可以从仓库拉取镜像到本地来启动对应的容器。
Docker镜像是用来构建Docker容器的静态文件,是Docker容器的基础。Docker镜像包含了运行容器所有必要的文件,按层组织,每一层是一系列文件,前一层是后一层的基础,且一旦形成不可修改,通过在已有的基础镜像上添加新的镜像层,可以构建新的镜像,用户还可以将镜像的内容和创建步骤描述在一个文本文件(Dockerfile)中,实现自动化部署。
Docker Registry以镜像层为存储和分发镜像的基本单位。上传镜像的时候,每个镜像层以压缩文件(Blob)的形式存储到Registry,镜像层内容对应的哈希值作为唯一资源标志符,Registry还会创建一个静态文件(Manifest)来记录该镜像所有镜像层的索引信息,确保以后能够找到该镜像的所有镜像层。拉取镜像的时候,Docker Daemon先从Registry获取镜像的Manifest来确定对应所有镜像层的索引信息,再向Registry获取本地没有的镜像层(Blob),并将其解压到本地存储。构建容器的时候,Docker Daemon会先确认本地是否已存在所需镜像,若没有则按照上述步骤拉取镜像,根据镜像构建容器。
- BitTorrent
BitTorrent[9]是一种内容分发协议,用于在网络上快速、高效、分布式地分发文件。BitTorrent协议将文件分片,每个节点通过交换文件的片段来实现完整文件的下载,这降低了网络流量、硬件成本和下载完整文件所需的总时间。
BitTorrent协议中的节点可以分为种子节点(Seeder)和下载节点(Leecher),种子节点是指具备完整文件的主机,而下载节点是指不具备或只具备一部分文件资源的主机。跟踪服务器(Tracker)是BitTorrent协议中维护分发网络的服务器,负责跟踪网络中所有参与节点,收集和统计节点状态,协助节点之间互相发现。在BitTorrent协议中,种子文件(Torrent文件)用于记录目标文件所在分发网络的Tracker的地址和目标文件的信息,由文件发布者上传,下载者可以根据torrent中的URL到对应Tracker发送请求报文、向Tracker返回的节点获取相应资源。
此外,为了防止节点只下载不共享的行为,BitTorrent协议采取“tit-for-tat”机制作为节点选择机制,在节点在共享资源时,只将资源分发给过去20秒内共享数据最多的4个节点。在片选择方面,BitTorrent协议采取“最少片段优先”的机制,降低由于拥有稀缺片段的节点离开网络造成这些片段缺失的风险,但在最开始就采取“最少片段优先”的机制可能造成多数节点访问一个节点的情况,所以BitTorrent协议中节点随机选择第一个要下载的片段。
- 容器镜像分发方式的发展历程
在云中分发虚拟机镜像的一种传统方式是通过网络文件系统协议——NFS[10]。NFS是由SUN公司研制的表示层协议,自1984问世之后不断演变,逐步成为分布式文件系统的基础。NFS采用C/S架构,服务器负责存储虚拟机镜像,客户端按需获取镜像资源。为管理者和用户提供了一种简便的镜像分发方法。
课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。