US 12,147,824 B2
Container cloning and branching
Victor Fong, Medford, MA (US); and Xuebin He, Westwood, MA (US)
Assigned to EMC IP Holding Company LLC, Hopkinton, MA (US)
Filed by EMC IP Holding Company LLC, Hopkinton, MA (US)
Filed on Feb. 27, 2020, as Appl. No. 16/802,880.
Prior Publication US 2021/0271499 A1, Sep. 2, 2021
Int. Cl. G06F 9/455 (2018.01); G06F 16/901 (2019.01)
CPC G06F 9/45558 (2013.01) [G06F 16/9027 (2019.01); G06F 2009/45562 (2013.01); G06F 2009/4557 (2013.01); G06F 2009/45575 (2013.01)] 18 Claims
OG exemplary drawing
 
1. A method, comprising:
invoking a library to clone a container running on a host, wherein the invoking comprises acquiring from the library a predetermined execution point that identifies in code where, during execution of the running container, a cloning operation should occur, and a location of a second host, associated with the execution point, to which a clone of the running container is to be deployed;
making, by the library, a synchronous call to a controller requesting that the running container be cloned;
in response to the call, the controller performing:
pausing the container at the execution point specified in the library;
generating a checkpoint image of the running container, wherein the checkpoint image includes a memory dump of the running container and is stored in a checkpoint image storage;
storing the checkpoint image as a child of the running container in a list maintained by the controller, wherein the list identifies a tree of containers that designate a container as a parent container and one or more other containers as children of the parent and leaf containers, wherein the tree of containers allows restoration of a leaf to be performed using checkpoint images in a corresponding branch of the tree of containers and wherein the running container and the clone container are included in the tree of containers;
restoring the checkpoint image into a clone container on the second host that is specified in the library, wherein restoring the checkpoint image includes restoring the memory dump of the running container into the clone container; and
issuing a response to the call to the clone container indicating that the clone container may proceed to new instructions or requests;
in response to receiving the response, resuming operation of the clone container at the execution point; and
resuming operation of the running container at the execution point.