CN107729020B - 一种实现大规模容器快速部署的方法 - Google Patents
一种实现大规模容器快速部署的方法 Download PDFInfo
- Publication number
- CN107729020B CN107729020B CN201710939453.4A CN201710939453A CN107729020B CN 107729020 B CN107729020 B CN 107729020B CN 201710939453 A CN201710939453 A CN 201710939453A CN 107729020 B CN107729020 B CN 107729020B
- Authority
- CN
- China
- Prior art keywords
- block device
- ceph
- mirror image
- container
- mirror
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种实现大规模容器快速部署的方法,采用块存储服务RBD将集群中所有镜像的数据存储于网络存储中,在所述RBD中,容器镜像以分层结构存储,每个镜像对应一个Ceph块设备,其中父镜像和子镜像之间的冗余数据被剔除,对父Ceph块设备做快照,然后克隆快照,生成与做快照时的父块设备相同的块设备作为子Ceph块设备,所述Ceph块设备的写时拷贝粒度是对象,所述对象为Ceph中的基本存储单元,容器部署的仓库仅作为一个元数据服务器,其中只存储了镜像列表、镜像的层次信息和镜像层与Ceph块设备之间的映射关系。
Description
技术领域
本发明涉及一种文件管理方法,尤其涉及一种实现大规模容器快速部署的方法。
背景技术
容器技术能取得成功很大程度上归因于它在打包和部署应用方面带来的便利。一个应用所需要的二进制文件和所依赖的库文件都被打包到一个镜像中,保证了应用运行时环境的一致性,简化了部署工作。然而,随着镜像大小的增长,应用部署的效率也受到了不利影响。
图1展示了传统的容器部署架构,是个典型的中心化系统,镜像仓库在集群的镜像分发过程中扮演着中心的角色。Docker镜像由多个镜像层(layer)组成,每个镜像层代表着一个软件或者库的文件集合。所有的镜像层都以gzip压缩文件的方式存放在镜像仓库中,镜像元数据(image metadata)也存放于镜像仓库中。镜像元数据包含了镜像和镜像层之间的映射关系。为了能在集群中部署容器,工作节点必须拉取(pull)完整的镜像,然后将其存放在本地的写时拷贝(copy-on-write,COW)结构的存储中。工作节点的本地存储由存储驱动管理,代表性的存储驱动有Aufs、Devicemapper、Overlay和Overlay2。当镜像拉取完毕之后,存储驱动会在镜像之上再构造一个写时拷贝层,作为容器存储层。
现有技术的部署方式在性能上还远远不能满足需求。由同一局域网下的两台主机构成,分别是一个私有镜像仓库和一个工作节点,测试Docker Hub上下载量排名前69的镜像的部署时间。测试结果表明,容器的平均部署时间高达13.4秒。然而,有许许多多的场景对部署延迟有着很高的要求:为了应对突发流量,服务要迅速横向扩展;为了保证系统的高可用,应用需要尽快地从故障状态中恢复;在持续集成(Continuous Integration)的工作流中,缩短部署时间对提高生产效率来说也很重要。
现有技术例如并行下载和压缩数据可以加快拉取速度,然而拉取整个庞大的镜像依然是部署性能的短板。特别是在大规模容器的部署中,对于中央镜像仓库的竞争会进一步拖慢下载。为了解决这个问题,必须尽量减少部署过程中传输的数据量。
发明内容
本发明提出一种实现大规模容器快速部署的方法。本发明设置一个基于网络存储的Docker容器部署系统。所述方法能显著降低部署过程传输的数据量,进而大大加快容器部署速度。
本发明提出的一种实现大规模容器快速部署的方法,采用块存储服务RBD将集群中所有镜像的数据存储于网络存储中,在所述RBD中,容器镜像以分层结构存储,每个镜像对应一个Ceph块设备,其中父镜像和子镜像之间的冗余数据被剔除,对父Ceph块设备做快照,然后克隆快照,生成与做快照时的父块设备相同的块设备作为子Ceph块设备,所述Ceph块设备的写时拷贝粒度是对象,所述对象为Ceph中的基本存储单元,容器部署的仓库仅作为一个元数据服务器,其中只存储了镜像列表、镜像的层次信息和镜像层与Ceph块设备之间的映射关系。
附图说明
图1为现有技术的容器部署架构的整体框架图;
图2为现有技术中拉取和运行的效果图;
图3为本发明基于网络存储的容器部署结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
容器部署过程分为两步操作:
步骤1.镜像层以gzip压缩的形式存储在镜像仓库中。一个镜像包含多个镜像层,工作节点可以进行并发下载。当被下载到本地时,镜像层会被立刻解压到本地的存储中。虽然镜像层能够并发下载,但是其解压的过程却不能并行化,原因是镜像层之间有先后依赖的顺序。本地存储的具体结构依存储驱动而定,Devicemapper驱动将镜像存储在精简配置(thin-provisioned)的块设备中,而Overlay驱动将镜像存储在特殊构造的本地文件系统中。
步骤2.镜像被成功导入到本地存储之后可用于重复启动容器实例。在启动一个容器之前,存储驱动首先会在镜像之上创建一个Init层,用于初始化一些容器特有的文件,比如hostname文件、DNS地址文件等。之后,Init层之上会创建另外一个容器层,作为容器的根文件系统。所有这些本地存储中的容器层均利用写时拷贝生成,以提高空间利用率和启动性能。另外,不同的驱动有不同的写时拷贝粒度:Aufs和Overlay是文件级的写时拷贝;Devicemapper是块级别的写时拷贝。最终,容器在隔离的根文件系统中启动。
图2展示了部署期间拉取(pull)和运行(run)两个阶段各自所花费的时间,每个点代表一次镜像部署。从图中可以明显看到,随着镜像大小的增长,运行时间保持在稳定的水平,平均来说是1.1秒。而拉取的时间和镜像大小之间有显著的正相关关系。平均的拉取时间为12.3秒,占据了92%的部署时间(13.4秒)。缓慢的拉取过程是容器部署的效率瓶颈所在。
本发明的实现大规模容器快速部署的方法采用网络存储的Docker容器部署系统,能显著降低部署过程传输的数据量,进而大大加快容器部署速度。
图3展示了本发明快速部署系统的系统架构。相对于将镜像存储于镜像仓库中然后向工作节点分发的方式,所述系统将集群中所有镜像的数据存储于网络存储中,本发明采用Ceph块设备(RADOS Block Device,RBD)池。RBD是Ceph提供的块存储服务。在RBD池中,Docker镜像以一种分层的结构存储,每个镜像对应一个Ceph块设备。利用写时拷贝技术,父镜像和子镜像之间的冗余数据被剔除。例如,Nginx镜像不需拷贝Debian镜像的所有数据,只需在Debian镜像之上构造一个写时拷贝层然后写入增量数据即可。由于镜像之间有父子依赖关系,对应的Ceph块设备也具有父子依赖关系。创建子Ceph块设备须经两步:对父Ceph块设备做快照,然后克隆快照。克隆操作会生成一个与做快照那一刻的父块设备相同的块设备。Ceph的写时拷贝粒度是对象(object),所述对象特指Ceph中的基本存储单元。系统中的仓库(registry)只作为一个元数据服务器,它只存储了镜像列表、镜像的层次信息和镜像层与Ceph块设备之间的映射关系。本发明的部署过程主要包含三个步骤:
1)加载镜像元数据
当工作节点收到容器部署命令时,从仓库中加载相关的镜像元数据并进行解析,获取所对应Ceph块设备的信息。相对于整个镜像,元数据的大小几乎可以忽略不计,一般只有几百KB。加载和解析元数据的时间相当短,只需0.2~0.3秒。因此在面对并发下载请求时,仓库的压力可以大大缓解。
2)挂载镜像块设备
直接把镜像所对应的Ceph块设备映射到本地,并将其挂载到本地目录。挂载后的目录会包含一个完整的根文件系统。“映射”在这里指的是在本地内核注册Ceph网络块设备,使其成为一个可本地访问的块设备。
3)构造本地容器层
利用存储驱动overlayfs实现文件级别的写时拷贝,生成容器的存储层,为了运行容器,工作节点从容器存储层中读取程序二进制和配置等数据,所述数据块以按需加载的形式从Ceph中拉取,启动容器需要读取的数据占据的比例不超过整个镜像大小的8%,当需要修改镜像中的文件时,容器将镜像中的文件先拷贝到容器存储层中再进行修改,不改变原镜像的内容。事实上,容器存储层也可以放到网络存储中,但是在大规模并发部署容器时,这种方式会给网络存储带来较大的压力,影响部署速度。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (1)
1.一种实现大规模容器快速部署的方法,其特征在于,采用块存储服务RBD将集群中所有镜像的数据存储于网络存储中,在所述RBD中,容器镜像以分层结构存储,每个镜像对应一个Ceph块设备,其中父镜像和子镜像之间的冗余数据被剔除,对父Ceph块设备做快照,然后克隆快照,生成与做快照时的父块设备相同的块设备作为子Ceph块设备,所述Ceph块设备的写时拷贝粒度是对象,所述对象为Ceph中的基本存储单元,容器部署的仓库仅作为一个元数据服务器,其中只存储了镜像列表、镜像的层次信息和镜像层与Ceph块设备之间的映射关系;所述大规模容器快速部署的方法包括三个步骤:步骤1、加载镜像元数据;步骤2、挂载镜像块设备;步骤3、构造本地容器层;所述步骤1中,当工作节点收到容器部署命令时,从仓库中加载相关的镜像元数据并进行解析,快速获取所对应Ceph块设备的信息,所获取的时间为0.2~0.3秒;所述步骤2中,将镜像所对应的Ceph块设备映射到本地,并将其挂载到本地目录,挂载后的目录包含一个完整的根文件系统,所述映射为在本地内核注册Ceph网络块设备,使所述Ceph网络块设备成为一个可本地访问的块设备;所述步骤3中,进行文件级别的写时拷贝生成容器的存储层,工作节点从容器存储层中读取程序二进制和配置数据,数据块以按需加载的形式从Ceph块设备中拉取,启动容器需要读取的数据占据的比例不超过整个镜像大小的8%,当需要修改镜像中的文件时,容器将镜像中的文件先拷贝到容器存储层中再进行修改,不改变原镜像的内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710939453.4A CN107729020B (zh) | 2017-10-11 | 2017-10-11 | 一种实现大规模容器快速部署的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710939453.4A CN107729020B (zh) | 2017-10-11 | 2017-10-11 | 一种实现大规模容器快速部署的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107729020A CN107729020A (zh) | 2018-02-23 |
CN107729020B true CN107729020B (zh) | 2020-08-28 |
Family
ID=61209955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710939453.4A Active CN107729020B (zh) | 2017-10-11 | 2017-10-11 | 一种实现大规模容器快速部署的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729020B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190386B (zh) * | 2018-04-04 | 2021-11-12 | 中国电子科技网络信息安全有限公司 | 基于Device Mapper的容器镜像分层加密存储方法 |
CN109033328B (zh) * | 2018-07-19 | 2022-08-02 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
CN109933342B (zh) * | 2019-03-18 | 2020-10-16 | 北京升鑫网络科技有限公司 | 一种从本地docker镜像中提取文件内容的方法及装置 |
CN110058923B (zh) * | 2019-03-29 | 2021-03-26 | 华中科技大学 | 一种基于动态预取策略的Docker容器COW机制优化方法及系统 |
US10969988B2 (en) | 2019-06-07 | 2021-04-06 | International Business Machines Corporation | Performing proactive copy-on-write for containers |
CN112306621A (zh) * | 2019-07-24 | 2021-02-02 | 中兴通讯股份有限公司 | 容器分层部署方法及系统 |
CN111125003B (zh) * | 2019-11-25 | 2024-01-26 | 中科边缘智慧信息科技(苏州)有限公司 | 一种容器镜像轻量化及快速分发方法 |
CN113407296A (zh) * | 2020-03-16 | 2021-09-17 | 阿里巴巴集团控股有限公司 | 容器服务管理方法和装置 |
CN111427666B (zh) * | 2020-04-01 | 2022-04-12 | 浪潮云信息技术股份公司 | 一种OpenStack环境下虚拟机镜像快速导入方法及系统 |
CN112433810B (zh) * | 2020-11-05 | 2023-12-26 | 北京浪潮数据技术有限公司 | docker容器镜像存储、拉取方法、装置及计算机可读存储介质 |
CN112527463B (zh) * | 2020-12-17 | 2023-08-04 | 重庆邮电大学 | 一种基于对象存储的容器镜像下载加速方法 |
CN112860374A (zh) * | 2021-01-30 | 2021-05-28 | 柏科数据技术(深圳)股份有限公司 | 快速部署Ceph方法、装置、服务器及存储介质 |
CN114296871A (zh) * | 2021-12-22 | 2022-04-08 | 华人运通(上海)云计算科技有限公司 | 基于容器的持续集成方法、装置、系统及工作节点和介质 |
CN116700902B (zh) * | 2023-06-25 | 2024-03-12 | 天津大学 | 一种镜像层异步并行提取的容器加速部署方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103561101A (zh) * | 2013-11-06 | 2014-02-05 | 中国联合网络通信集团有限公司 | 一种网络文件系统 |
CN103970585A (zh) * | 2013-01-31 | 2014-08-06 | 杭州华三通信技术有限公司 | 创建虚拟机的方法及装置 |
CN104050015A (zh) * | 2014-06-27 | 2014-09-17 | 国家计算机网络与信息安全管理中心 | 一种虚拟机镜像存储分发系统 |
WO2015039181A1 (en) * | 2013-09-23 | 2015-03-26 | Gopc Pty Ltd | Virtual computing systems and methods |
CN105278999A (zh) * | 2015-11-19 | 2016-01-27 | 国云科技股份有限公司 | 一种安全高效虚拟机软件部署的方法 |
CN105511943A (zh) * | 2015-12-03 | 2016-04-20 | 华为技术有限公司 | 一种Docker容器运行方法和装置 |
CN105607954A (zh) * | 2015-12-21 | 2016-05-25 | 华南师范大学 | 一种有状态容器在线迁移的方法和装置 |
WO2016086269A1 (en) * | 2014-12-02 | 2016-06-09 | Gopc Pty Ltd | Computing systems and methods |
CN105843704A (zh) * | 2016-03-15 | 2016-08-10 | 上海爱数信息技术股份有限公司 | 一种结合分布式块存储的快照功能的数据保护方法及系统 |
CN106126125A (zh) * | 2016-06-30 | 2016-11-16 | 国云科技股份有限公司 | 一种软件应用包在存储池中的存放方法 |
CN106445563A (zh) * | 2016-11-24 | 2017-02-22 | 合肥中科云巢科技有限公司 | 操作系统镜像制作方法和装置 |
CN106843837A (zh) * | 2016-12-21 | 2017-06-13 | 中电科华云信息技术有限公司 | openstack组件容器化的构建方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095527A (zh) * | 2016-06-07 | 2016-11-09 | 国云科技股份有限公司 | 一种适用于云平台虚拟机的存储池实现方法 |
CN106506587B (zh) * | 2016-09-23 | 2021-08-06 | 中国人民解放军国防科学技术大学 | 一种基于分布式存储的Docker镜像下载方法 |
CN106446275A (zh) * | 2016-10-21 | 2017-02-22 | 国云科技股份有限公司 | 一种支持文件系统扩容的容器实现方法 |
CN106527985A (zh) * | 2016-11-02 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种基于ceph的存储交互装置及存储系统 |
CN107197022B (zh) * | 2017-06-02 | 2020-01-10 | 华南理工大学 | OpenStack存储优化方法及系统 |
-
2017
- 2017-10-11 CN CN201710939453.4A patent/CN107729020B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970585A (zh) * | 2013-01-31 | 2014-08-06 | 杭州华三通信技术有限公司 | 创建虚拟机的方法及装置 |
WO2015039181A1 (en) * | 2013-09-23 | 2015-03-26 | Gopc Pty Ltd | Virtual computing systems and methods |
CN103561101A (zh) * | 2013-11-06 | 2014-02-05 | 中国联合网络通信集团有限公司 | 一种网络文件系统 |
CN104050015A (zh) * | 2014-06-27 | 2014-09-17 | 国家计算机网络与信息安全管理中心 | 一种虚拟机镜像存储分发系统 |
WO2016086269A1 (en) * | 2014-12-02 | 2016-06-09 | Gopc Pty Ltd | Computing systems and methods |
CN105278999A (zh) * | 2015-11-19 | 2016-01-27 | 国云科技股份有限公司 | 一种安全高效虚拟机软件部署的方法 |
CN105511943A (zh) * | 2015-12-03 | 2016-04-20 | 华为技术有限公司 | 一种Docker容器运行方法和装置 |
CN105607954A (zh) * | 2015-12-21 | 2016-05-25 | 华南师范大学 | 一种有状态容器在线迁移的方法和装置 |
CN105843704A (zh) * | 2016-03-15 | 2016-08-10 | 上海爱数信息技术股份有限公司 | 一种结合分布式块存储的快照功能的数据保护方法及系统 |
CN106126125A (zh) * | 2016-06-30 | 2016-11-16 | 国云科技股份有限公司 | 一种软件应用包在存储池中的存放方法 |
CN106445563A (zh) * | 2016-11-24 | 2017-02-22 | 合肥中科云巢科技有限公司 | 操作系统镜像制作方法和装置 |
CN106843837A (zh) * | 2016-12-21 | 2017-06-13 | 中电科华云信息技术有限公司 | openstack组件容器化的构建方法 |
Non-Patent Citations (2)
Title |
---|
Design and Implementation of Ceph Block Device in Userspace for Container Scenarios;Wang Li,Wen Yunchuan;《2016 INTERNATIONAL SYMPOSIUM ON COMPUTER, CONSUMER AND CONTROL (IS3C)》;20160818;第383-386页 * |
基于 RBD 的 Docker 虚拟化技术性能优化研究;张翰博,倪明,卢胜林;《信息技术》;20160825;第125-129页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107729020A (zh) | 2018-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729020B (zh) | 一种实现大规模容器快速部署的方法 | |
US12118341B2 (en) | Conversion and restoration of computer environments to container-based implementations | |
US20230289176A1 (en) | Integration of containers with external elements | |
CN107515776B (zh) | 业务不间断升级方法、待升级节点和可读存储介质 | |
CN111492347B (zh) | 用于更新容器的系统和方法 | |
US20180196654A1 (en) | Docker Container Operating Method and Apparatus | |
CN111930473B (zh) | 在容器云上部署图像识别服务的方法与设备 | |
CN107783816A (zh) | 虚拟机的创建方法及装置、大数据集群创建的方法及装置 | |
CN111124286A (zh) | 一种基于Libcloud的多云管理实现方法 | |
CN109240716B (zh) | 一种大数据平台版本管理与快速迭代部署方法及系统 | |
JP2022076475A (ja) | コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開) | |
US20190286354A1 (en) | Selecting and compressing target files to obtain additional free data storage space to perform an operation in a virtual machine | |
CN102255866A (zh) | 一种数据下载方法及装置 | |
CN112311605B (zh) | 提供机器学习服务的云平台及方法 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN110753119A (zh) | 一种基于K8s集群的应用包部署系统 | |
Fan et al. | Gear: Enable efficient container storage and deployment with a new image format | |
CN110275719B (zh) | 基于国产cpu和操作系统的云物理主机操作系统部署方法 | |
CN115480785A (zh) | 基于容器的服务部署方法、装置和服务器 | |
CN112468545A (zh) | 一种云主机创建方法、装置、系统、设备及可读存储介质 | |
CN109558143A (zh) | 一种集群中部署应用的方法及装置 | |
CN114465877A (zh) | 一种适合无线自组织网络环境的边缘云迁移方法和系统 | |
US9588884B2 (en) | Systems and methods for in-place reorganization of device storage | |
CN111435299A (zh) | 一种应用程序的处理方法及装置 | |
CN115586872A (zh) | 一种容器镜像管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |