CN107526626A - 一种基于CRIU的Docker容器热迁移方法及系统 - Google Patents

一种基于CRIU的Docker容器热迁移方法及系统 Download PDF

Info

Publication number
CN107526626A
CN107526626A CN201710737534.6A CN201710737534A CN107526626A CN 107526626 A CN107526626 A CN 107526626A CN 201710737534 A CN201710737534 A CN 201710737534A CN 107526626 A CN107526626 A CN 107526626A
Authority
CN
China
Prior art keywords
container
migration
docker
mirror image
checkpoint
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.)
Granted
Application number
CN201710737534.6A
Other languages
English (en)
Other versions
CN107526626B (zh
Inventor
王丽娜
徐来
余荣威
鞠瑞
谈诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201710737534.6A priority Critical patent/CN107526626B/zh
Publication of CN107526626A publication Critical patent/CN107526626A/zh
Application granted granted Critical
Publication of CN107526626B publication Critical patent/CN107526626B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1036Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开一种基于CRIU的Docker容器热迁移方法及系统。该方案基于Docker容器配置信息重构容器创建命令进而实现Docker容器配置迁移,结合共享存储和非共享存储特点,采用不同Docker镜像分发方法实现Docker容器文件系统迁移,以避免现有方案直接迁移容器磁盘文件造成的Docker daemon重启问题。通过将volume源进行归一化处理,并在此基础上提出volume热迁移算法,简化了Docker容器的volume迁移。通过引入Docker仓库安全机制以及Rsync+SSH网络通信机制,该方案能够在非共享存储环境中保证迁移过程中迁移数据的机密性和完整性。

Description

一种基于CRIU的Docker容器热迁移方法及系统
技术领域
本发明涉及Docker容器热迁移机制,其为DDOS攻击的重要防御手段负载均衡的基础技术,属于信息安全领域。
背景技术
近年来,轻量级应用容器在云环境中得到了快速发展,以Docker为代表的CaaS(容器即服务)技术正在成为云计算的新形式。Docker容器具有轻量级、快速部署和管理简单的特点,可以使得构建和发布应用变得更加简单、高效。随着Docker容器的飞速发展,对容器的功能需求也随之不断扩展;云提供商迫切希望应用容器能够和其他虚拟化产品(如虚拟机)一样,能够具有负载均衡、容灾备份、高可用性等新的企业级特性。与此同时,为了增加容器中应用的安全性,尤其是对于DDoS攻击的容忍能力,容器需要具有一定的负载均衡能力以应对DDoS攻击带来的威胁。
以上这些企业级特性和安全特性的需求,都要求容器和在容器中的应用能够按需进行跨主机的热迁移;然而,Docker容器到目前为止并没有提供成熟的内置(原生)迁移手段。其根本原因是Docker容器和虚拟机之间有本质的不同:虚拟机是由虚拟化管理器(Hypervisor)模拟(emulate)的一台完备的机器。物理机系统的挂起和恢复操作非常成熟而稳定,可以为虚拟机的热迁移提供协助;而应用容器本质上是一组Linux进程,进程作为操作系统的基本调度单位,最初的设计原则上就是高度依赖于本地操作系统的。在存储结构方面,Docker容器也和虚拟机不同:虚拟机的所有文件系统都保存于镜像中,只要把镜像放在共享存储里,就可以避免进行耗时的存储迁移;而Docker容器的镜像分层结构和外部卷机制,导致Docker镜像无法通过直接拷贝或共享的方式进行迁移。
目前,针对虚拟机的热迁移技术已经相对成熟,而容器热迁移则是一个新兴的研究点。早先的Linux操作系统并不具备进行热迁移的架构基础,直到2011年CRIU机制的出现才使得容器的热迁移成为可能;但是仅凭借该功能无法完成Docker容器的热迁移,还需要对Docker容器的配置、Volume、网络等各方面均进行迁移,并且维持迁移前后数据和配置的一致性和较低的重新响应时间。
近年来国内外研究者在利用CRIU机制进行容器迁移方面进行了多方面的探索。但已有的基于CRIU的容器热迁移方案一旦应用于Docker,必须重启Docker守护进程才能重新载入被迁移容器的状态,这会影响其他所有正常运行的容器。毛祺等人提出通过Docker的私有仓库保存容器基础镜像并以推送和拉取(push/pull)方式同步,从而实现容器的迁移。该方案虽然避免了Docker原生迁移命令export/import和save/load对整个文件系统进行复制的问题,只对修改部分进行迁移,但是该方案不属于热迁移,无法保持迁移前后容器状态一致。
发明内容
本发明的目的是提供一种可应用于共享存储和非共享存储的基于CRIU的Docker容器热迁移方法及系统,该方案整体框架如图1所示,本发明采用C/S架构,包括:
迁移组件步骤:用于完成迁移过程中针对容器所需的所有迁移操作,供迁移模块调用以迁移容器
迁移步骤:用于在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,具体流程如图3所示;
清理步骤,包括:
迁出子步骤:在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;
迁出子步骤:在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行。
在上述的一种基于CRIU的Docker容器热迁移方法,所述迁移组件步骤具体包括:
步骤1、配置迁移子步骤
配置迁移子模块主要负责从容器的配置文件中读取配置,并根据这些配置信息重构出容器创建命令,用于在新创建的容器中重现原容器的配置;具体流程如图2所示:
步骤1.根据传入的容器id读取相应配置文件hostconfig.json和config.v2.json,并从config.v2.json配置文件中获取Config.Tty的值,如果为true,则返回错误信息,该容器无法迁移,并结束本模块运行,否则,继续执行第2步;
步骤2.获取容器配置,并将依据docker create命令选项的数据格式对获取到的数据进行格式转换,并将之保存到集合OPTIONS中;
步骤3.判断工作模式是否是共享存储环境下,如果是,将新镜像的名称设置为“容器id_migrate”,如果不是,设置为“私有仓库ip:port/容器id_migrate”;
步骤4.利用OPTIONS和新镜像的名称合成docker create容器创建命令;
步骤2、运行状态迁移子步骤,具体包括:
步骤2.1.在源节点基于“docker checkpoint create”命令对正在运行中的容器进行checkpoint操作并将生成的容器状态信息发送到目的地址;
步骤2.2.在目的主机B上基于待迁移容器C的checkpoint文件,使用“dockercheckpoint create C cp_C--checkpoint-dir/目的地址“命令创建一个新容器C*中,并启动容器C*以继续运行;
当共享存储时,目的地址为/mnt/checkpoints,当非共享存储模式,目的地址为目的主机上的/migrate/checkpoints;
步骤3、Volume数据迁移子步骤,具体包括:
步骤3.1.遍历Volume配置项,将其源路径修改为目的地址/Volume目的路径,将源路径:新的源路径作为键值对添加到待迁移Volume集合中;
步骤3.2.使用Rsync将待迁移Volume集合中的Volume源路径中数据复制到新的数据源路径;
步骤3.3.如果容器处于运行状态,使用inotify监控原容器的Volume源路径,当其发生变化时,使用Rsync同步到新的数据源路径中;
步骤3.4.一旦容器停止运行,将剩余未同步的数据同步到新的数据源路径中;
步骤4、文件系统迁移子步骤:
如果被迁移的是只读容器,镜像迁移只需要在进行checkpoint停机操作前,在目的主机上预先从Docker仓库拉取(pull)指定的镜像即可;
如果被迁移的容器不是只读容器,则分为共享存储和非共享存储,具体步骤如下:
共享存储模式:
步骤1.使用export命令将容器文件系统保存到共享存储中的images文件夹;
步骤2.利用import命令从目的主机将共享存储中的tar文件导入目的主机的Docker daemon中,生成新的镜像img*;
步骤3.使用docker create命令基于镜像img*创建用于恢复的容器;
非共享存储模式:
预存储:私有仓库PrR(private Registry)预先存储有整个集群中所有容器的初始创建镜像;
步骤1.目的主机从PrR拉取(pull)待迁移容器C的初始创建镜像img;与此同时,在源主机对待迁移容器C进行commit操作,将容器对文件系统的最新修改保存到更新后的镜像img*中;
步骤2.commit操作完成后,源主机将镜像img*推送到私有仓库PrR中;
步骤3.在目的主机拉取镜像img*,并根据该镜像重新创建容器C*。
在上述的一种基于CRIU的Docker容器热迁移方法,所述迁移步骤具体包括:
迁出端的迁移子步骤,具体包括:
步骤1.从用户输入的命令行参数中获取容器id和工作模式,在共享存储工作模式下,与迁入端建立网络连接,在非共享存储模式下,与迁入端建立SSL连接;
步骤2.调用配置迁移组件获取容器创建命令,如果报错,则进行报警,转到步骤8;
步骤3.将容器创建命令和容器ID传输到目的主机,由迁入端接收;
步骤4.调用Volume数据迁移组件开启对容器的Volume数据的迁移;
步骤5.获取用户输入命令行中工作模式参数,调用运行状态迁移组件为容器创建checkpoint,获取运行结果,如果失败,进行报警,转到步骤8,否则直接转到步骤6;
步骤6.基于当前迁移工作模式调用文件系统迁移组件导出(或更新并上传)Docker容器的文件系统;并完成Volume剩余数据的同步;
步骤7.监听迁入端返回结果;
步骤8.调用清理模块进行后续处理;
迁入端的迁移子步骤,具体包括:
步骤1.检查系统工作模式,如果为共享存储,与迁出端建立普通连接,转到步骤4;如果没有共享存储,与迁出端建立SSL网络连接;
步骤2.从迁出端接收容器初始镜像的名称;
步骤3.然后调用文件系统迁移组件从共享存储中拉取镜像;
步骤4.接收迁出端发送的容器创建命令和容器ID,并利用该命令创建一个新容器;
步骤5.接收迁出端传输的容器运行状态迁移结果,如果成功,转到步骤6,否则,转到步骤9;
步骤6.检查系统工作模式,并调用文件系统迁移组件导入(或拉取)Docker容器镜像;
步骤7.调用运行状态迁移组件利用docker start的--checkpoint参数从被迁移容器被冻结的状态开启新容器,完成被迁移容器的状态迁移;
步骤8.获取容器的运行状态,并返回给迁出端;
步骤9.调用清理模块进行后续处理。
在上述的一种基于CRIU的Docker容器热迁移方法,所述清理步骤具体包括:
迁出端:在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.删除源主机中的被迁移的容器;
步骤3.并利用docker start的--checkpoint参数在迁出端将被迁移容器从被冻结的检查点恢复运行;
步骤4.检查系统工作模式,如果是共享存储,删除容器导出的tar文件,否则,删除为迁移容器所生成的新镜像;
步骤5.删除checkpoint;
迁入端:在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下所示:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.检查目前工作模式,如果处于非共享存储模式,删除为迁移而复制到目的主机的checkpoint文件,否则转到步骤5;
步骤3.检查目前工作模式,如果是共享存储,直接转到步骤4,否则删除原容器初始创建镜像和复制到目的主机的Volume数据;
步骤4.删除为迁移容器所生成的新镜像。
一种基于CRIU的Docker容器热迁移系统,其特征在于,包括:
迁移组件模块:用于完成迁移过程中针对容器所需的所有迁移操作,供迁移模块调用以迁移容器
迁移模块:用于在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,具体流程如图3所示;
清理模块,包括:
迁出端:本模块主要负责在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;
迁出端:本模块主要负责在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行。
在上述的一种基于CRIU的Docker容器热迁移系统,迁移组件模块包括4个子模块,分别为配置迁移子模块、运行状态迁移子模块、Volume数据迁移子模块以及文件系统迁移子模块;其中,
配置迁移子模块:从容器的配置文件中读取配置,并根据这些配置信息重构出容器创建命令,用于在新创建的容器中重现原容器的配置,包括:
步骤1.根据传入的容器id读取相应配置文件hostconfig.json和config.v2.json,并从config.v2.json配置文件中获取Config.Tty的值,如果为true,则返回错误信息,该容器无法迁移,并结束本模块运行,否则,继续执行第2步;
步骤2.获取容器配置,并将依据docker create命令选项的数据格式对获取到的数据进行格式转换,并将之保存到集合OPTIONS中;
步骤3.判断工作模式是否是共享存储环境下,如果是,将新镜像的名称设置为“容器id_migrate”,如果不是,设置为“私有仓库ip:port/容器id_migrate”;
步骤4.利用OPTIONS和新镜像的名称合成docker create容器创建命令;
运行状态迁移子模块:Docker容器的运行状态迁移基于Docker 1.13新增的以CRIU为基础的checkpoint&restore机制实现,该机制主要包含两步,具体如下:
步骤1.在源节点基于“docker checkpoint create”命令对正在运行中的容器进行checkpoint操作并将生成的容器状态信息发送到目的地址;
步骤2.在目的主机B上基于待迁移容器C的checkpoint文件,使用“dockercheckpoint create C cp_C--checkpoint-dir/目的地址“命令创建一个新容器C*中,并启动容器C*以继续运行;
当共享存储时,目的地址为/mnt/checkpoints,当非共享存储模式,目的地址为目的主机上的/migrate/checkpoints;
Volume数据迁移子模块:将非共享存储环境中的不同来源的数据卷归一化为绑定挂载,并指定数据卷迁移的目的目录;在此基础上实现数据卷迁移;具体步骤如下:
步骤1.遍历Volume配置项,将其源路径修改为目的地址/Volume目的路径,将源路径:新的源路径作为键值对添加到待迁移Volume集合中;
步骤2.使用Rsync将待迁移Volume集合中的Volume源路径中数据复制到新的数据源路径;
步骤3.如果容器处于运行状态,使用inotify监控原容器的Volume源路径,当其发生变化时,使用Rsync同步到新的数据源路径中;
步骤4.一旦容器停止运行,将剩余未同步的数据同步到新的数据源路径中;
文件系统迁移子模块:如果被迁移的是只读容器,镜像迁移只需要在进行checkpoint停机操作前,在目的主机上预先从Docker仓库拉取(pull)指定的镜像即可;
如果被迁移的容器不是只读容器,则分为共享存储和非共享存储两种情况分别讨论;具体步骤如下:
1)共享存储模式
步骤1.使用export命令将容器文件系统保存到共享存储中的images文件夹;
步骤2.利用import命令从目的主机将共享存储中的tar文件导入目的主机的Docker daemon中,生成新的镜像img*;
步骤3.使用docker create命令基于镜像img*创建用于恢复的容器;
2)非共享存储模式
预存储:私有仓库PrR(private Registry)预先存储有整个集群中所有容器的初始创建镜像;
步骤1.目的主机从PrR拉取(pull)待迁移容器C的初始创建镜像img;与此同时,在源主机对待迁移容器C进行commit操作,将容器对文件系统的最新修改保存到更新后的镜像img*中;
步骤2.commit操作完成后,源主机将镜像img*推送到私有仓库PrR中;
步骤3.在目的主机拉取镜像img*,并根据该镜像重新创建容器C*。
在上述的一种基于CRIU的Docker容器热迁移系统,迁移模块在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,其中,
迁出端具体流程如下:
步骤1.从用户输入的命令行参数中获取容器id和工作模式,在共享存储工作模式下,与迁入端建立网络连接,在非共享存储模式下,与迁入端建立SSL连接;
步骤2.调用配置迁移组件获取容器创建命令,如果报错,则进行报警,转到步骤8;
步骤3.将容器创建命令和容器ID传输到目的主机,由迁入端接收;
步骤4.调用Volume数据迁移组件开启对容器的Volume数据的迁移;
步骤5.获取用户输入命令行中工作模式参数,调用运行状态迁移组件为容器创建checkpoint,获取运行结果,如果失败,进行报警,转到步骤8,否则直接转到步骤6;
步骤6.基于当前迁移工作模式调用文件系统迁移组件导出(或更新并上传)Docker容器的文件系统;并完成Volume剩余数据的同步;
步骤7.监听迁入端返回结果;
步骤8.调用清理模块进行后续处理;
迁入端具体流程如下:
步骤1.检查系统工作模式,如果为共享存储,与迁出端建立普通连接,转到步骤4;如果没有共享存储,与迁出端建立SSL网络连接;
步骤2.从迁出端接收容器初始镜像的名称;
步骤3.然后调用文件系统迁移组件从共享存储中拉取镜像;
步骤4.接收迁出端发送的容器创建命令和容器ID,并利用该命令创建一个新容器;
步骤5.接收迁出端传输的容器运行状态迁移结果,如果成功,转到步骤6,否则,转到步骤9;
步骤6.检查系统工作模式,并调用文件系统迁移组件导入(或拉取)Docker容器镜像;
步骤7.调用运行状态迁移组件利用docker start的--checkpoint参数从被迁移容器被冻结的状态开启新容器,完成被迁移容器的状态迁移;
步骤8.获取容器的运行状态,并返回给迁出端;
步骤9.调用清理模块进行后续处理。
在上述的一种基于CRIU的Docker容器热迁移系统,清理模块包括:
迁出端:在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.删除源主机中的被迁移的容器;
步骤3.并利用docker start的--checkpoint参数在迁出端将被迁移容器从被冻结的检查点恢复运行;
步骤4.检查系统工作模式,如果是共享存储,删除容器导出的tar文件,否则,删除为迁移容器所生成的新镜像;
步骤5.删除checkpoint;
迁入端:在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下所示:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.检查目前工作模式,如果处于非共享存储模式,删除为迁移而复制到目的主机的checkpoint文件,否则转到步骤5;
步骤3.检查目前工作模式,如果是共享存储,直接转到步骤4,否则删除原容器初始创建镜像和复制到目的主机的Volume数据;
步骤4.删除为迁移容器所生成的新镜像。
本发明具有如下优点:通过将volume源进行归一化处理,并在此基础上提出volume热迁移算法,简化了Docker容器的volume迁移。通过引入Docker仓库安全机制以及Rsync+SSH网络通信机制,该方案能够在非共享存储环境中保证迁移过程中迁移数据的机密性和完整性。
附图说明
图1为本发明的整体框架图。
图2为本发明配置迁移流程图。
图3为本发明Volume数据迁移流程图。
图4为本发明迁移模块流程图(左为迁出端,右为迁移端)。
图5为本发明迁出端清理模块流程图。
图6为本发明迁入端清理模块流程图。
具体实施方式
一、本发明的目的是提供一种可应用于共享存储和非共享存储的基于CRIU的Docker容器热迁移方案,该方案整体框架如图1所示,本发明采用C/S架构,主要分为迁移组件模块,迁移模块以及清理模块。接下来会对三个模块分别进行详细介绍。
一、迁移组件模块
本模块主要负责完成迁移过程中针对容器所需的所有迁移操作,供迁移模块调用以迁移容器。其共有4个子模块,分别为配置迁移子模块、运行状态迁移子模块、Volume数据迁移子模块以及文件系统迁移子模块。
1)配置迁移子模块
配置迁移子模块主要负责从容器的配置文件中读取配置,并根据这些配置信息重构出容器创建命令,用于在新创建的容器中重现原容器的配置。具体流程如图2所示:
步骤1.根据传入的容器id读取相应配置文件hostconfig.json和config.v2.json,并从config.v2.json配置文件中获取Config.Tty的值,如果为true,则返回错误信息,该容器无法迁移,并结束本模块运行,否则,继续执行第2步。
步骤2.获取容器配置,并将依据docker create命令选项的数据格式对获取到的数据进行格式转换,并将之保存到集合OPTIONS中。
步骤3.判断工作模式是否是共享存储环境下,如果是,将新镜像的名称设置为“容器id_migrate”,如果不是,设置为“私有仓库ip:port/容器id_migrate”。
步骤4.利用OPTIONS和新镜像的名称合成docker create容器创建命令。
2)运行状态迁移子模块
本方案中,Docker容器的运行状态迁移基于Docker 1.13新增的以CRIU为基础的checkpoint&restore机制实现,该机制主要包含两步,具体如下:
步骤1.在源节点基于“docker checkpoint create”命令对正在运行中的容器进行checkpoint操作并将生成的容器状态信息发送到目的地址。
步骤2.在目的主机B上基于待迁移容器C的checkpoint文件,使用“dockercheckpoint create C cp_C--checkpoint-dir/目的地址“命令创建一个新容器C*中,并启动容器C*以继续运行。
当共享存储时,目的地址为/mnt/checkpoints,当非共享存储模式,目的地址为目的主机上的/migrate/checkpoints。
3)Volume数据迁移子模块
为简化Volume数据迁移,本发明将非共享存储环境中的不同来源的数据卷(自身创建,绑定挂载目录,共享其他容器)归一化为绑定挂载,并指定数据卷迁移的目的目录。在此基础上实现数据卷迁移。具体步骤如下:
步骤1.遍历Volume配置项,将其源路径修改为目的地址/Volume目的路径,将源路径:新的源路径作为键值对添加到待迁移Volume集合中。
步骤2.使用Rsync将待迁移Volume集合中的Volume源路径中数据复制到新的数据源路径。
步骤3.如果容器处于运行状态,使用inotify监控原容器的Volume源路径,当其发生变化时,使用Rsync同步到新的数据源路径中。
步骤4.一旦容器停止运行,将剩余未同步的数据同步到新的数据源路径中。
4)文件系统迁移子模块
文件系统迁移主要分为三种情况,如果被迁移的是只读容器,镜像迁移只需要在进行checkpoint停机操作前,在目的主机上预先从Docker仓库拉取(pull)指定的镜像即可。
如果被迁移的容器不是只读容器,则分为共享存储和非共享存储两种情况分别讨论。具体步骤如下:
1)共享存储模式
步骤1.使用export命令将容器文件系统保存到共享存储中的images文件夹。
步骤2.利用import命令从目的主机将共享存储中的tar文件导入目的主机的Docker daemon中,生成新的镜像img*。
步骤3.使用docker create命令基于镜像img*创建用于恢复的容器。
2)非共享存储模式
预存储:私有仓库PrR(private Registry)预先存储有整个集群中所有容器的初始创建镜像。
步骤1.目的主机从PrR拉取(pull)待迁移容器C的初始创建镜像img;与此同时,在源主机对待迁移容器C进行commit操作,将容器对文件系统的最新修改保存到更新后的镜像img*中。
步骤2.commit操作完成后,源主机将镜像img*推送到私有仓库PrR中。
步骤3.在目的主机拉取镜像img*,并根据该镜像重新创建容器C*。
二、迁移模块
迁移模块主要负责在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,具体流程如图3所示。
迁出端具体流程如下:
步骤1.从用户输入的命令行参数中获取容器id和工作模式,在共享存储工作模式下,与迁入端建立网络连接,在非共享存储模式下,与迁入端建立SSL连接。
步骤2.调用配置迁移组件获取容器创建命令,如果报错,则进行报警,转到步骤8。
步骤3.将容器创建命令和容器ID传输到目的主机,由迁入端接收。
步骤4.调用Volume数据迁移组件开启对容器的Volume数据的迁移。
步骤5.获取用户输入命令行中工作模式参数,调用运行状态迁移组件为容器创建checkpoint,获取运行结果,如果失败,进行报警,转到步骤8,否则直接转到步骤6。
步骤6.基于当前迁移工作模式调用文件系统迁移组件导出(或更新并上传)Docker容器的文件系统。并完成Volume剩余数据的同步。
步骤7.监听迁入端返回结果。
步骤8.调用清理模块进行后续处理。
迁入端具体流程如下:
步骤1.检查系统工作模式,如果为共享存储,与迁出端建立普通连接,转到步骤4;如果没有共享存储,与迁出端建立SSL网络连接。
步骤2.从迁出端接收容器初始镜像的名称。
步骤3.然后调用文件系统迁移组件从共享存储中拉取镜像。
步骤4.接收迁出端发送的容器创建命令和容器ID,并利用该命令创建一个新容器。
步骤5.接收迁出端传输的容器运行状态迁移结果,如果成功,转到步骤6,否则,转到步骤9。
步骤6.检查系统工作模式,并调用文件系统迁移组件导入(或拉取)Docker容器镜像。
步骤7.调用运行状态迁移组件利用docker start的--checkpoint参数从被迁移容器被冻结的状态开启新容器,完成被迁移容器的状态迁移。
步骤8.获取容器的运行状态,并返回给迁出端。
步骤9.调用清理模块进行后续处理。
三、清理模块
1)迁出端:本模块主要负责在迁移完成后,对源主机和共享存储中生成的中间文件进行删除。无论容器迁移成功与否,该模块均会执行。具体流程如下:
步骤1.从迁移模块获取容器迁移的结果。如果迁移成功执行第2步,如果迁移失败,则执行第3步。
步骤2.删除源主机中的被迁移的容器。
步骤3.并利用docker start的--checkpoint参数在迁出端将被迁移容器从被冻结的检查点恢复运行。
步骤4.检查系统工作模式,如果是共享存储,删除容器导出的tar文件,否则,删除为迁移容器所生成的新镜像。
步骤5.删除checkpoint。
2)迁入端
本模块主要负责在迁移完成后,对在目的主机使用过的中间文件进行删除。无论容器迁移成功与否,该模块均会执行。具体流程如下所示:
步骤1.从迁移模块获取容器迁移的结果。如果迁移成功执行第2步,如果迁移失败,则执行第3步。
步骤2.检查目前工作模式,如果处于非共享存储模式,删除为迁移而复制到目的主机的checkpoint文件,否则转到步骤5。
步骤3.检查目前工作模式,如果是共享存储,直接转到步骤4,否则删除原容器初始创建镜像和复制到目的主机的Volume数据。
步骤4.删除为迁移容器所生成的新镜像。
二、本发明提供一种可工作在共享存储和非共享存储模式下的基于CRIU技术的Docker容器热迁移方案,该方案以CRIU为基础实现容器运行状态的迁移,包括以下步骤:
在本发明中,Docker容器热迁移主要分为三步:预迁移、迁移与恢复。
步骤1.预迁移:
步骤1.1在目的主机启动迁移程序监听连接。在源主机启动迁移程序连接到目的主机。如果为共享存储模式,建立的是普通连接,如果为非共享存储模式,建立的是SSL连接。
步骤1.2如果工作模式为非共享存储模式,在源主机由迁出端迁移模块将容器初始创建镜像名称发送给目的主机,并由迁入端迁移模块在目的主机上从私有仓库PrivateRegistry中拉取待迁移容器C的初始镜像。否则跳过本步骤,直接执行步骤1.2。
步骤1.2迁出端迁移模块在源主机上合成docker create容器创建命令。
步骤1.3迁出端迁移模块在源主机上对Volume进行同步。
步骤2.迁移:
步骤2.1迁出端迁移模块将容器创建命令和容器id发送到目的主机。
步骤2.2迁出端迁移模块在源主机对正在运行中的容器C进行checkpoint操作,并将之传输到目的地址。
步骤2.3迁出端迁移模块执行导出文件系统操作,如果为只读容器,绕过此步。否则,如果为共享存储模式,对待迁移容器C执行export操作,将结果保存到共享存储中。如果为非共享存储模式,在源主机对待迁移容器C执行commit操作。并使用push命令将新创建的镜像img*推送到私有仓库Private Registry中。
步骤2.4迁出端迁移模块将待迁移容器的剩余未同步Volume数据同步到目的地址中。
步骤3.恢复容器
步骤3.1迁入端迁移模块执行导入容器镜像操作,如果为只读容器,绕过此步。否则,在共享存储模式,在目的主机使用import操作将共享存储中保存的待迁移容器C的文件系统备份制作成镜像。在非共享存储模式,在目的主机从Private Registry中拉取新镜像。
步骤3.2迁入端迁移模块获取容器创建命令docker create并运行该命令基于新生成的镜像创建一个容器C*。
步骤3.3迁入端迁移模块基于checkpoint文件将容器从被冻结的状态启动并继续运行。
步骤4.清理
调用清理模块对容器迁移过程中产生的中间文件进行清理。
本发明机制仅仅提供一个Docker容器自动化热迁移机制,本发明所属技术领域的技术人员可以对所描述的具体实施案例做各种各样的修改或补充或采用类似的方式替代,例如在文件系统迁移方面,可以选择其他的方式。但并不会偏离本发明的精神或者超越所附权要求书所定义的范围。

Claims (8)

1.一种基于CRIU的Docker容器热迁移方法,其特征在于,包括:
迁移组件步骤:用于完成迁移过程中针对容器所需的所有迁移操作,供迁移模块调用以迁移容器
迁移步骤:用于在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,具体流程如图3所示;
清理步骤,包括:
迁出子步骤:在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;
迁出子步骤:在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行。
2.根据权利要求1所述的一种基于CRIU的Docker容器热迁移方法,其特征在于,所述迁移组件步骤具体包括:
步骤1、配置迁移子步骤
配置迁移子模块主要负责从容器的配置文件中读取配置,并根据这些配置信息重构出容器创建命令,用于在新创建的容器中重现原容器的配置;具体流程如图2所示:
步骤1.根据传入的容器id读取相应配置文件hostconfig.json和config.v2.json,并从config.v2.json配置文件中获取Config.Tty的值,如果为true,则返回错误信息,该容器无法迁移,并结束本模块运行,否则,继续执行第2步;
步骤2.获取容器配置,并将依据docker create命令选项的数据格式对获取到的数据进行格式转换,并将之保存到集合OPTIONS中;
步骤3.判断工作模式是否是共享存储环境下,如果是,将新镜像的名称设置为“容器id_migrate”,如果不是,设置为“私有仓库ip:port/容器id_migrate”;
步骤4.利用OPTIONS和新镜像的名称合成docker create容器创建命令;
步骤2、运行状态迁移子步骤,具体包括:
步骤2.1.在源节点基于“docker checkpoint create”命令对正在运行中的容器进行checkpoint操作并将生成的容器状态信息发送到目的地址;
步骤2.2.在目的主机B上基于待迁移容器C的checkpoint文件,使用“dockercheckpoint create C cp_C--checkpoint-dir/目的地址“命令创建一个新容器C*中,并启动容器C*以继续运行;
当共享存储时,目的地址为/mnt/checkpoints,当非共享存储模式,目的地址为目的主机上的/migrate/checkpoints;
步骤3、Volume数据迁移子步骤,具体包括:
步骤3.1.遍历Volume配置项,将其源路径修改为目的地址/Volume目的路径,将源路径:新的源路径作为键值对添加到待迁移Volume集合中;
步骤3.2.使用Rsync将待迁移Volume集合中的Volume源路径中数据复制到新的数据源路径;
步骤3.3.如果容器处于运行状态,使用inotify监控原容器的Volume源路径,当其发生变化时,使用Rsync同步到新的数据源路径中;
步骤3.4.一旦容器停止运行,将剩余未同步的数据同步到新的数据源路径中;
步骤4、文件系统迁移子步骤:
如果被迁移的是只读容器,镜像迁移只需要在进行checkpoint停机操作前,在目的主机上预先从Docker仓库拉取(pull)指定的镜像即可;
如果被迁移的容器不是只读容器,则分为共享存储和非共享存储,具体步骤如下:
共享存储模式:
步骤1.使用export命令将容器文件系统保存到共享存储中的images文件夹;
步骤2.利用import命令从目的主机将共享存储中的tar文件导入目的主机的Dockerdaemon中,生成新的镜像img*;
步骤3.使用docker create命令基于镜像img*创建用于恢复的容器;
非共享存储模式:
预存储:私有仓库PrR(private Registry)预先存储有整个集群中所有容器的初始创建镜像;
步骤1.目的主机从PrR拉取(pull)待迁移容器C的初始创建镜像img;与此同时,在源主机对待迁移容器C进行commit操作,将容器对文件系统的最新修改保存到更新后的镜像img*中;
步骤2.commit操作完成后,源主机将镜像img*推送到私有仓库PrR中;
步骤3.在目的主机拉取镜像img*,并根据该镜像重新创建容器C*。
3.根据权利要求1所述的一种基于CRIU的Docker容器热迁移方法,其特征在于,所述迁移步骤具体包括:
迁出端的迁移子步骤,具体包括:
步骤1.从用户输入的命令行参数中获取容器id和工作模式,在共享存储工作模式下,与迁入端建立网络连接,在非共享存储模式下,与迁入端建立SSL连接;
步骤2.调用配置迁移组件获取容器创建命令,如果报错,则进行报警,转到步骤8;
步骤3.将容器创建命令和容器ID传输到目的主机,由迁入端接收;
步骤4.调用Volume数据迁移组件开启对容器的Volume数据的迁移;
步骤5.获取用户输入命令行中工作模式参数,调用运行状态迁移组件为容器创建checkpoint,获取运行结果,如果失败,进行报警,转到步骤8,否则直接转到步骤6;
步骤6.基于当前迁移工作模式调用文件系统迁移组件导出(或更新并上传)Docker容器的文件系统;并完成Volume剩余数据的同步;
步骤7.监听迁入端返回结果;
步骤8.调用清理模块进行后续处理;
迁入端的迁移子步骤,具体包括:
步骤1.检查系统工作模式,如果为共享存储,与迁出端建立普通连接,转到步骤4;如果没有共享存储,与迁出端建立SSL网络连接;
步骤2.从迁出端接收容器初始镜像的名称;
步骤3.然后调用文件系统迁移组件从共享存储中拉取镜像;
步骤4.接收迁出端发送的容器创建命令和容器ID,并利用该命令创建一个新容器;
步骤5.接收迁出端传输的容器运行状态迁移结果,如果成功,转到步骤6,否则,转到步骤9;
步骤6.检查系统工作模式,并调用文件系统迁移组件导入(或拉取)Docker容器镜像;
步骤7.调用运行状态迁移组件利用docker start的--checkpoint参数从被迁移容器被冻结的状态开启新容器,完成被迁移容器的状态迁移;
步骤8.获取容器的运行状态,并返回给迁出端;
步骤9.调用清理模块进行后续处理。
4.根据权利要求1所述的一种基于CRIU的Docker容器热迁移方法,其特征在于,所述清理步骤具体包括:
迁出端:在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.删除源主机中的被迁移的容器;
步骤3.并利用docker start的--checkpoint参数在迁出端将被迁移容器从被冻结的检查点恢复运行;
步骤4.检查系统工作模式,如果是共享存储,删除容器导出的tar文件,否则,删除为迁移容器所生成的新镜像;
步骤5.删除checkpoint;
迁入端:在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下所示:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.检查目前工作模式,如果处于非共享存储模式,删除为迁移而复制到目的主机的checkpoint文件,否则转到步骤5;
步骤3.检查目前工作模式,如果是共享存储,直接转到步骤4,否则删除原容器初始创建镜像和复制到目的主机的Volume数据;
步骤4.删除为迁移容器所生成的新镜像。
5.一种基于CRIU的Docker容器热迁移系统,其特征在于,包括:
迁移组件模块:用于完成迁移过程中针对容器所需的所有迁移操作,供迁移模块调用以迁移容器
迁移模块:用于在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,具体流程如图3所示;
清理模块,包括:
迁出端:本模块主要负责在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;
迁出端:本模块主要负责在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行。
6.根据权利要求5所述的一种基于CRIU的Docker容器热迁移系统,其特征在于,迁移组件模块包括4个子模块,分别为配置迁移子模块、运行状态迁移子模块、Volume数据迁移子模块以及文件系统迁移子模块;其中,
配置迁移子模块:从容器的配置文件中读取配置,并根据这些配置信息重构出容器创建命令,用于在新创建的容器中重现原容器的配置,包括:
步骤1.根据传入的容器id读取相应配置文件hostconfig.json和config.v2.json,并从config.v2.json配置文件中获取Config.Tty的值,如果为true,则返回错误信息,该容器无法迁移,并结束本模块运行,否则,继续执行第2步;
步骤2.获取容器配置,并将依据docker create命令选项的数据格式对获取到的数据进行格式转换,并将之保存到集合OPTIONS中;
步骤3.判断工作模式是否是共享存储环境下,如果是,将新镜像的名称设置为“容器id_migrate”,如果不是,设置为“私有仓库ip:port/容器id_migrate”;
步骤4.利用OPTIONS和新镜像的名称合成docker create容器创建命令;
运行状态迁移子模块:Docker容器的运行状态迁移基于Docker 1.13新增的以CRIU为基础的checkpoint&restore机制实现,该机制主要包含两步,具体如下:
步骤1.在源节点基于“docker checkpoint create”命令对正在运行中的容器进行checkpoint操作并将生成的容器状态信息发送到目的地址;
步骤2.在目的主机B上基于待迁移容器C的checkpoint文件,使用“docker checkpointcreate C cp_C--checkpoint-dir/目的地址“命令创建一个新容器C*中,并启动容器C*以继续运行;
当共享存储时,目的地址为/mnt/checkpoints,当非共享存储模式,目的地址为目的主机上的/migrate/checkpoints;
Volume数据迁移子模块:将非共享存储环境中的不同来源的数据卷归一化为绑定挂载,并指定数据卷迁移的目的目录;在此基础上实现数据卷迁移;具体步骤如下:
步骤1.遍历Volume配置项,将其源路径修改为目的地址/Volume目的路径,将源路径:新的源路径作为键值对添加到待迁移Volume集合中;
步骤2.使用Rsync将待迁移Volume集合中的Volume源路径中数据复制到新的数据源路径;
步骤3.如果容器处于运行状态,使用inotify监控原容器的Volume源路径,当其发生变化时,使用Rsync同步到新的数据源路径中;
步骤4.一旦容器停止运行,将剩余未同步的数据同步到新的数据源路径中;
文件系统迁移子模块:如果被迁移的是只读容器,镜像迁移只需要在进行checkpoint停机操作前,在目的主机上预先从Docker仓库拉取(pull)指定的镜像即可;
如果被迁移的容器不是只读容器,则分为共享存储和非共享存储两种情况分别讨论;具体步骤如下:
1)共享存储模式
步骤1.使用export命令将容器文件系统保存到共享存储中的images文件夹;
步骤2.利用import命令从目的主机将共享存储中的tar文件导入目的主机的Dockerdaemon中,生成新的镜像img*;
步骤3.使用docker create命令基于镜像img*创建用于恢复的容器;
2)非共享存储模式
预存储:私有仓库PrR(private Registry)预先存储有整个集群中所有容器的初始创建镜像;
步骤1.目的主机从PrR拉取(pull)待迁移容器C的初始创建镜像img;与此同时,在源主机对待迁移容器C进行commit操作,将容器对文件系统的最新修改保存到更新后的镜像img*中;
步骤2.commit操作完成后,源主机将镜像img*推送到私有仓库PrR中;
步骤3.在目的主机拉取镜像img*,并根据该镜像重新创建容器C*。
7.根据权利要求5所述的一种基于CRIU的Docker容器热迁移系统,其特征在于,迁移模块在迁出端和迁入端建立网络连接,并通过调用迁移组件模块中的组件完成Docker容器的热迁移,其中,
迁出端具体流程如下:
步骤1.从用户输入的命令行参数中获取容器id和工作模式,在共享存储工作模式下,与迁入端建立网络连接,在非共享存储模式下,与迁入端建立SSL连接;
步骤2.调用配置迁移组件获取容器创建命令,如果报错,则进行报警,转到步骤8;
步骤3.将容器创建命令和容器ID传输到目的主机,由迁入端接收;
步骤4.调用Volume数据迁移组件开启对容器的Volume数据的迁移;
步骤5.获取用户输入命令行中工作模式参数,调用运行状态迁移组件为容器创建checkpoint,获取运行结果,如果失败,进行报警,转到步骤8,否则直接转到步骤6;
步骤6.基于当前迁移工作模式调用文件系统迁移组件导出(或更新并上传)Docker容器的文件系统;并完成Volume剩余数据的同步;
步骤7.监听迁入端返回结果;
步骤8.调用清理模块进行后续处理;
迁入端具体流程如下:
步骤1.检查系统工作模式,如果为共享存储,与迁出端建立普通连接,转到步骤4;如果没有共享存储,与迁出端建立SSL网络连接;
步骤2.从迁出端接收容器初始镜像的名称;
步骤3.然后调用文件系统迁移组件从共享存储中拉取镜像;
步骤4.接收迁出端发送的容器创建命令和容器ID,并利用该命令创建一个新容器;
步骤5.接收迁出端传输的容器运行状态迁移结果,如果成功,转到步骤6,否则,转到步骤9;
步骤6.检查系统工作模式,并调用文件系统迁移组件导入(或拉取)Docker容器镜像;
步骤7.调用运行状态迁移组件利用docker start的--checkpoint参数从被迁移容器被冻结的状态开启新容器,完成被迁移容器的状态迁移;
步骤8.获取容器的运行状态,并返回给迁出端;
步骤9.调用清理模块进行后续处理。
8.根据权利要求5所述的一种基于CRIU的Docker容器热迁移系统,其特征在于,清理模块包括:
迁出端:在迁移完成后,对源主机和共享存储中生成的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.删除源主机中的被迁移的容器;
步骤3.并利用docker start的--checkpoint参数在迁出端将被迁移容器从被冻结的检查点恢复运行;
步骤4.检查系统工作模式,如果是共享存储,删除容器导出的tar文件,否则,删除为迁移容器所生成的新镜像;
步骤5.删除checkpoint;
迁入端:在迁移完成后,对在目的主机使用过的中间文件进行删除;无论容器迁移成功与否,该模块均会执行;具体流程如下所示:
步骤1.从迁移模块获取容器迁移的结果;如果迁移成功执行第2步,如果迁移失败,则执行第3步;
步骤2.检查目前工作模式,如果处于非共享存储模式,删除为迁移而复制到目的主机的checkpoint文件,否则转到步骤5;
步骤3.检查目前工作模式,如果是共享存储,直接转到步骤4,否则删除原容器初始创建镜像和复制到目的主机的Volume数据;
步骤4.删除为迁移容器所生成的新镜像。
CN201710737534.6A 2017-08-24 2017-08-24 一种基于CRIU的Docker容器热迁移方法及系统 Active CN107526626B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710737534.6A CN107526626B (zh) 2017-08-24 2017-08-24 一种基于CRIU的Docker容器热迁移方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710737534.6A CN107526626B (zh) 2017-08-24 2017-08-24 一种基于CRIU的Docker容器热迁移方法及系统

Publications (2)

Publication Number Publication Date
CN107526626A true CN107526626A (zh) 2017-12-29
CN107526626B CN107526626B (zh) 2020-12-01

Family

ID=60682248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710737534.6A Active CN107526626B (zh) 2017-08-24 2017-08-24 一种基于CRIU的Docker容器热迁移方法及系统

Country Status (1)

Country Link
CN (1) CN107526626B (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291528A (zh) * 2017-07-14 2017-10-24 郑州云海信息技术有限公司 虚拟机迁移的处理方法和装置
CN108469982A (zh) * 2018-03-12 2018-08-31 华中科技大学 一种容器在线迁移方法
CN108762986A (zh) * 2018-05-24 2018-11-06 四川斐讯信息技术有限公司 一种防止异常断电导致配置丢失的方法及系统
CN108762882A (zh) * 2018-04-02 2018-11-06 杭州朗和科技有限公司 一种Docker容器的迁移方法、迁移装置、介质和计算设备
CN108768725A (zh) * 2018-05-30 2018-11-06 中国联合网络通信集团有限公司 容器热迁移的网络还原方法和系统
CN108958981A (zh) * 2018-07-24 2018-12-07 广东浪潮大数据研究有限公司 一种基于docker的镜像保存方法及相关装置
CN109271249A (zh) * 2018-07-27 2019-01-25 暨南大学 一种基于P.haul框架的云容器预拷贝在线迁移方法
CN109408115A (zh) * 2018-09-12 2019-03-01 上海数耕智能科技有限公司 一种基于容器环境中迁移对象的方法及计算系统
CN109739619A (zh) * 2018-12-12 2019-05-10 咪咕文化科技有限公司 一种基于容器化应用的处理方法、装置及存储介质
CN110109779A (zh) * 2019-07-02 2019-08-09 南京云信达科技有限公司 一种基于微服务进行数据恢复演练环境搭建的方法
CN110290172A (zh) * 2019-05-17 2019-09-27 平安科技(深圳)有限公司 容器应用克隆方法、装置、计算机设备及存储介质
CN110289983A (zh) * 2019-05-17 2019-09-27 平安科技(深圳)有限公司 负载均衡应用创建方法、装置、计算机设备及存储介质
CN110351336A (zh) * 2019-06-10 2019-10-18 西安交通大学 一种基于docker容器的边缘服务迁移方法
CN110377395A (zh) * 2019-07-03 2019-10-25 无锡华云数据技术服务有限公司 一种Kubernetes集群中的Pod迁移方法
CN110445662A (zh) * 2019-08-29 2019-11-12 上海仪电(集团)有限公司中央研究院 OpenStack控制节点自适应切换为计算节点的方法及装置
CN111324360A (zh) * 2020-01-09 2020-06-23 华中科技大学 一种面向边缘计算的容器镜像构建方法
CN111381933A (zh) * 2020-03-07 2020-07-07 北京工业大学 一种Docker热迁移实现方法
CN111414240A (zh) * 2019-01-07 2020-07-14 阿里巴巴集团控股有限公司 内核态进程复制方法以及装置、容器扩容方法以及装置
CN111414180A (zh) * 2020-03-18 2020-07-14 深圳力维智联技术有限公司 终端远程更新方法、设备及计算机可读存储介质
CN112860683A (zh) * 2021-03-31 2021-05-28 中国工商银行股份有限公司 数据集实时清理方法、装置及系统
CN113608840A (zh) * 2021-08-10 2021-11-05 中国联合网络通信集团有限公司 容器迁移方法和装置
CN113704218A (zh) * 2021-08-26 2021-11-26 哈尔滨工业大学 一种容器环境中运行时数据迁移方法及系统
CN113806009A (zh) * 2021-08-05 2021-12-17 厦门市美亚柏科信息股份有限公司 一种Docker容器自动重建方法、终端设备及存储介质
CN116166204A (zh) * 2023-04-19 2023-05-26 安元科技股份有限公司 一种多版本加密存储的迁移方法
CN117112498A (zh) * 2023-10-25 2023-11-24 中国电子科技集团公司第十五研究所 应用迁移方法、装置、电子设备和存储介质
CN117319054A (zh) * 2023-08-11 2023-12-29 北京宝联之星科技股份有限公司 一种基于容器技术的智能网络安全功能管理方法及系统
CN117319054B (zh) * 2023-08-11 2024-05-17 北京宝联之星科技股份有限公司 一种基于容器技术的智能网络安全功能管理方法及系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093317A1 (en) * 2009-10-21 2011-04-21 Danny Chan Combinatorial portfolio aggregations in electronic trade
CN103019804A (zh) * 2012-12-28 2013-04-03 中国人民解放军国防科学技术大学 OpenVZ虚拟化的VPS快速迁移方法
CN103885719A (zh) * 2012-12-21 2014-06-25 中国电信股份有限公司 虚拟机系统在线存储迁移的方法、系统与装置
CN105224466A (zh) * 2015-11-17 2016-01-06 广州亦云信息技术有限公司 一种基于Docker的集成测试方法及系统
CN105468473A (zh) * 2014-07-16 2016-04-06 北京奇虎科技有限公司 数据迁移方法及数据迁移装置
US20160261684A1 (en) * 2015-03-02 2016-09-08 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
CN105955805A (zh) * 2015-12-28 2016-09-21 中国银联股份有限公司 一种应用容器迁移的方法及装置
US20160274928A1 (en) * 2015-03-20 2016-09-22 International Business Machines Corporation Virtual machine migration between hypervisor virtual machines and containers
CN106155778A (zh) * 2016-07-07 2016-11-23 中国科学院声学研究所 一种应用容器的启动方法及系统
CN106933508A (zh) * 2017-02-14 2017-07-07 深信服科技股份有限公司 应用容器的迁移方法及装置
CN107066310A (zh) * 2017-03-11 2017-08-18 郑州云海信息技术有限公司 一种搭建及使用安全Docker私有仓库的方法及装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093317A1 (en) * 2009-10-21 2011-04-21 Danny Chan Combinatorial portfolio aggregations in electronic trade
CN103885719A (zh) * 2012-12-21 2014-06-25 中国电信股份有限公司 虚拟机系统在线存储迁移的方法、系统与装置
CN103019804A (zh) * 2012-12-28 2013-04-03 中国人民解放军国防科学技术大学 OpenVZ虚拟化的VPS快速迁移方法
CN105468473A (zh) * 2014-07-16 2016-04-06 北京奇虎科技有限公司 数据迁移方法及数据迁移装置
US20160261684A1 (en) * 2015-03-02 2016-09-08 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
US20160274928A1 (en) * 2015-03-20 2016-09-22 International Business Machines Corporation Virtual machine migration between hypervisor virtual machines and containers
CN105224466A (zh) * 2015-11-17 2016-01-06 广州亦云信息技术有限公司 一种基于Docker的集成测试方法及系统
CN105955805A (zh) * 2015-12-28 2016-09-21 中国银联股份有限公司 一种应用容器迁移的方法及装置
CN106155778A (zh) * 2016-07-07 2016-11-23 中国科学院声学研究所 一种应用容器的启动方法及系统
CN106933508A (zh) * 2017-02-14 2017-07-07 深信服科技股份有限公司 应用容器的迁移方法及装置
CN107066310A (zh) * 2017-03-11 2017-08-18 郑州云海信息技术有限公司 一种搭建及使用安全Docker私有仓库的方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SHRIPAD NADGOWDA ET AL: "Voyager:Complete Container State Migration", 《2017 IEEE 37TH INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS(ICDCS)》 *
姜渠: "一种基于linux容器的动态迁移方法", 《信息技术与信息化》 *
房锦章等: "基于Docker技术的GUI应用的在线迁移研究", 《计算机系统应用》 *

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291528A (zh) * 2017-07-14 2017-10-24 郑州云海信息技术有限公司 虚拟机迁移的处理方法和装置
CN108469982B (zh) * 2018-03-12 2021-03-26 华中科技大学 一种容器在线迁移方法
CN108469982A (zh) * 2018-03-12 2018-08-31 华中科技大学 一种容器在线迁移方法
CN108762882A (zh) * 2018-04-02 2018-11-06 杭州朗和科技有限公司 一种Docker容器的迁移方法、迁移装置、介质和计算设备
CN108762882B (zh) * 2018-04-02 2021-12-21 杭州朗和科技有限公司 一种Docker容器的迁移方法、迁移装置、介质和计算设备
CN108762986A (zh) * 2018-05-24 2018-11-06 四川斐讯信息技术有限公司 一种防止异常断电导致配置丢失的方法及系统
CN108768725A (zh) * 2018-05-30 2018-11-06 中国联合网络通信集团有限公司 容器热迁移的网络还原方法和系统
CN108958981A (zh) * 2018-07-24 2018-12-07 广东浪潮大数据研究有限公司 一种基于docker的镜像保存方法及相关装置
CN109271249A (zh) * 2018-07-27 2019-01-25 暨南大学 一种基于P.haul框架的云容器预拷贝在线迁移方法
CN109271249B (zh) * 2018-07-27 2022-02-08 暨南大学 一种基于P.haul框架的云容器预拷贝在线迁移方法
CN109408115A (zh) * 2018-09-12 2019-03-01 上海数耕智能科技有限公司 一种基于容器环境中迁移对象的方法及计算系统
CN109408115B (zh) * 2018-09-12 2022-03-04 上海华云互越数据技术有限公司 一种基于容器环境中迁移对象的方法及计算系统
CN109739619A (zh) * 2018-12-12 2019-05-10 咪咕文化科技有限公司 一种基于容器化应用的处理方法、装置及存储介质
CN111414240B (zh) * 2019-01-07 2023-05-09 阿里巴巴集团控股有限公司 内核态进程复制方法以及装置、容器扩容方法以及装置
CN111414240A (zh) * 2019-01-07 2020-07-14 阿里巴巴集团控股有限公司 内核态进程复制方法以及装置、容器扩容方法以及装置
CN110290172A (zh) * 2019-05-17 2019-09-27 平安科技(深圳)有限公司 容器应用克隆方法、装置、计算机设备及存储介质
CN110290172B (zh) * 2019-05-17 2022-02-11 平安科技(深圳)有限公司 容器应用克隆方法、装置、计算机设备及存储介质
CN110289983A (zh) * 2019-05-17 2019-09-27 平安科技(深圳)有限公司 负载均衡应用创建方法、装置、计算机设备及存储介质
CN110351336A (zh) * 2019-06-10 2019-10-18 西安交通大学 一种基于docker容器的边缘服务迁移方法
CN110351336B (zh) * 2019-06-10 2020-05-19 西安交通大学 一种基于docker容器的边缘服务迁移方法
CN110109779A (zh) * 2019-07-02 2019-08-09 南京云信达科技有限公司 一种基于微服务进行数据恢复演练环境搭建的方法
CN110377395A (zh) * 2019-07-03 2019-10-25 无锡华云数据技术服务有限公司 一种Kubernetes集群中的Pod迁移方法
CN110377395B (zh) * 2019-07-03 2021-11-02 华云数据控股集团有限公司 一种Kubernetes集群中的Pod迁移方法
CN110445662A (zh) * 2019-08-29 2019-11-12 上海仪电(集团)有限公司中央研究院 OpenStack控制节点自适应切换为计算节点的方法及装置
CN111324360A (zh) * 2020-01-09 2020-06-23 华中科技大学 一种面向边缘计算的容器镜像构建方法
CN111381933B (zh) * 2020-03-07 2023-09-22 北京工业大学 一种Docker热迁移实现方法
CN111381933A (zh) * 2020-03-07 2020-07-07 北京工业大学 一种Docker热迁移实现方法
CN111414180A (zh) * 2020-03-18 2020-07-14 深圳力维智联技术有限公司 终端远程更新方法、设备及计算机可读存储介质
CN112860683A (zh) * 2021-03-31 2021-05-28 中国工商银行股份有限公司 数据集实时清理方法、装置及系统
CN112860683B (zh) * 2021-03-31 2024-02-02 中国工商银行股份有限公司 数据集实时清理方法、装置及系统
CN113806009A (zh) * 2021-08-05 2021-12-17 厦门市美亚柏科信息股份有限公司 一种Docker容器自动重建方法、终端设备及存储介质
CN113608840B (zh) * 2021-08-10 2023-06-20 中国联合网络通信集团有限公司 容器迁移方法和装置
CN113608840A (zh) * 2021-08-10 2021-11-05 中国联合网络通信集团有限公司 容器迁移方法和装置
CN113704218A (zh) * 2021-08-26 2021-11-26 哈尔滨工业大学 一种容器环境中运行时数据迁移方法及系统
CN113704218B (zh) * 2021-08-26 2024-04-05 哈尔滨工业大学 一种容器环境中运行时数据迁移方法及系统
CN116166204A (zh) * 2023-04-19 2023-05-26 安元科技股份有限公司 一种多版本加密存储的迁移方法
CN117319054A (zh) * 2023-08-11 2023-12-29 北京宝联之星科技股份有限公司 一种基于容器技术的智能网络安全功能管理方法及系统
CN117319054B (zh) * 2023-08-11 2024-05-17 北京宝联之星科技股份有限公司 一种基于容器技术的智能网络安全功能管理方法及系统
CN117112498A (zh) * 2023-10-25 2023-11-24 中国电子科技集团公司第十五研究所 应用迁移方法、装置、电子设备和存储介质
CN117112498B (zh) * 2023-10-25 2024-01-23 中国电子科技集团公司第十五研究所 应用迁移方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN107526626B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN107526626A (zh) 一种基于CRIU的Docker容器热迁移方法及系统
US9727429B1 (en) Method and system for immediate recovery of replicated virtual machines
US9110693B1 (en) VM mobility over distance
CN106528327B (zh) 一种数据处理方法以及备份服务器
CN103095834B (zh) 一种跨虚拟化数据中心的虚拟机在线迁移方法
CN102214128B (zh) 多用途恢复环境
CN103176831B (zh) 一种虚拟机系统及其管理方法
WO2016121830A1 (ja) 仮想ネットワークファンクション管理装置、システム、ヒーリング方法及びプログラム
US20140317369A1 (en) Snapshot creation from block lists
US20170206207A1 (en) Virtual file server
CN104216801B (zh) 一种面向虚拟化环境的数据复制方法及系统
CN105407117B (zh) 分布式备份数据的方法、装置和系统
CN103647849A (zh) 一种业务迁移方法、装置和一种容灾系统
EP4141667A1 (en) Efficiently providing virtual machine reference points
CN106407214A (zh) 分布式存储方法与系统
CN110347483B (zh) 物理机到虚拟机迁移方法、装置及存储介质
CN107480237A (zh) 面向异构桌面云平台的数据融合方法及系统
CN106790713B (zh) 云计算环境下的跨数据中心虚拟机迁移方法
CN112311646B (zh) 基于超融合系统的混合云及部署方法
US11550491B2 (en) Container-based application processing
CN112882726A (zh) 基于Hadoop和Docker的环境系统的部署方法
CN110134489A (zh) 应用迁移方法及装置、系统、存储介质、应用上云工具
US11347694B2 (en) Efficient change block tracking in a distributed generation-id (GID) based log structured file system (LSFS)
CN106612314A (zh) 基于虚拟机实现软件定义存储的系统
CN108121558B (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