This article describes the status of checkpoint/restore integration with containerd, and how to use it.
One thing that may be confusing at first is the separation between a "container" and a "task" in containerd. A container is a metadata object that resources are allocated and attached to. A task is a live, running process on the system. Tasks should be deleted after each run while a container can be used, updated, and queried multiple times.
Container Checkpoint/Restore
The following example shows how to run a container from an OCI image, create a checkpoint of the running container, and restore a new container from the checkpoint.
Download "redis:alpine" image if not already available locally.
ctr image pull docker.io/library/redis:alpine
Create and run a new container with ID "redis"
ctr run -d docker.io/library/redis:alpine redis
Create container checkpoint
ctr c checkpoint --rw --task redis checkpoint/redis:cr-1
Show information about the new checkpoint image registered with containerd
ctr images ls 'name==checkpoint/redis:cr-1'
Restore container from checkpoint with new ID (redis-debug)
ctr c restore --rw --live redis-debug checkpoint/redis:cr-1