aboutsummaryrefslogtreecommitdiff
path: root/cmd/podman/checkpoint.go
diff options
context:
space:
mode:
authorAdrian Reber <areber@redhat.com>2018-11-20 15:34:15 +0000
committerAdrian Reber <adrian@lisas.de>2018-11-20 17:25:44 +0100
commitb0572d622974837c2221ed1f01a2ab982f078370 (patch)
tree1c4ad4bb26973210546639cbd4f86b12d8754270 /cmd/podman/checkpoint.go
parentff47a4c2d5485fc49f937f3ce0c4e2fd6bdb1956 (diff)
downloadpodman-b0572d622974837c2221ed1f01a2ab982f078370.tar.gz
podman-b0572d622974837c2221ed1f01a2ab982f078370.tar.bz2
podman-b0572d622974837c2221ed1f01a2ab982f078370.zip
Added option to keep containers running after checkpointing
CRIU supports to leave processes running after checkpointing: -R|--leave-running leave tasks in running state after checkpoint runc also support to leave containers running after checkpointing: --leave-running leave the process running after checkpointing With this commit the support to leave a container running after checkpointing is brought to Podman: --leave-running, -R leave the container running after writing checkpoint to disk Now it is possible to checkpoint a container at some point in time without stopping the container. This can be used to rollback the container to an early state: $ podman run --tmpfs /tmp --name podman-criu-test -d docker://docker.io/yovfiatbeb/podman-criu-test $ curl 10.88.64.253:8080/examples/servlets/servlet/HelloWorldExample 3 $ podman container checkpoint -R -l $ curl 10.88.64.253:8080/examples/servlets/servlet/HelloWorldExample 4 $ curl 10.88.64.253:8080/examples/servlets/servlet/HelloWorldExample 5 $ podman stop -l $ podman container restore -l $ curl 10.88.64.253:8080/examples/servlets/servlet/HelloWorldExample 4 So after checkpointing the container kept running and was stopped after some time. Restoring this container will restore the state right at the checkpoint. Signed-off-by: Adrian Reber <areber@redhat.com>
Diffstat (limited to 'cmd/podman/checkpoint.go')
-rw-r--r--cmd/podman/checkpoint.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/cmd/podman/checkpoint.go b/cmd/podman/checkpoint.go
index 49e2aec63..ddfd12bc3 100644
--- a/cmd/podman/checkpoint.go
+++ b/cmd/podman/checkpoint.go
@@ -24,6 +24,10 @@ var (
Usage: "keep all temporary checkpoint files",
},
cli.BoolFlag{
+ Name: "leave-running, R",
+ Usage: "leave the container running after writing checkpoint to disk",
+ },
+ cli.BoolFlag{
Name: "all, a",
Usage: "checkpoint all running containers",
},
@@ -51,7 +55,8 @@ func checkpointCmd(c *cli.Context) error {
defer runtime.Shutdown(false)
options := libpod.ContainerCheckpointOptions{
- Keep: c.Bool("keep"),
+ Keep: c.Bool("keep"),
+ KeepRunning: c.Bool("leave-running"),
}
if err := checkAllAndLatest(c); err != nil {