Difference between revisions of "Runc"

From CRIU
Jump to navigation Jump to search
m
m
Line 44: Line 44:
 
sudo runc list
 
sudo runc list
 
sudo runc state looper
 
sudo runc state looper
 +
</pre>
 +
 +
The following command can be used to terminate the running container:
 +
<pre>
 +
runc kill looper
 
</pre>
 
</pre>

Revision as of 18:44, 9 October 2025

This article provides an overview of CRIU integration with runc and explains how to use it.

Container Checkpoint/Restore

# Create a container rootfs
mkdir -p alpine-container/rootfs && cd alpine-container
wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/x86_64/alpine-minirootfs-3.22.2-x86_64.tar.gz
tar -xzf alpine-minirootfs-3.22.2-x86_64.tar.gz -C rootfs
rm -f alpine-minirootfs-3.22.2-x86_64.tar.gz

# Create container spec file
runc spec

# Set looper command
sed -i 's/"sh"/"sh", "-c", "i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done"/' config.json

# Disable interactive terminal
sed -i 's/"terminal": true/"terminal": false/g' config.json

# Run container in the background
sudo runc run -d looper 0</dev/null 1>/dev/null 2>/dev/null

# Show running containers
sudo runc list
sudo runc state looper

Now the container can be checkpointed:

mkdir /tmp/checkpoint
sudo runc checkpoint --image-path /tmp/checkpoint --work-path /tmp/checkpoint looper

Once the container is checkpointed it will be no longer visible in runc list.

The following command can be used to restore the container:

sudo runc restore --image-path /tmp/checkpoint --work-path /tmp/checkpoint looper

# Show running containers
sudo runc list
sudo runc state looper

The following command can be used to terminate the running container:

runc kill looper