summaryrefslogtreecommitdiff
path: root/libpod/container_internal_linux.go
diff options
context:
space:
mode:
authorAdrian Reber <areber@redhat.com>2019-11-28 19:04:35 +0000
committerAdrian Reber <areber@redhat.com>2019-11-28 20:25:45 +0100
commit5e43c7cde1da185f3a9dc4f949e778b087d4ea42 (patch)
treeb5c48de998e469a17ca94788db81bceb0a289865 /libpod/container_internal_linux.go
parentaa95726c98385fb75bc70b6de7a86c09ed74abd5 (diff)
downloadpodman-5e43c7cde1da185f3a9dc4f949e778b087d4ea42.tar.gz
podman-5e43c7cde1da185f3a9dc4f949e778b087d4ea42.tar.bz2
podman-5e43c7cde1da185f3a9dc4f949e778b087d4ea42.zip
Disable checkpointing of containers started with --rm
Trying to checkpoint a container started with --rm works, but it makes no sense as the container, including the checkpoint, will be deleted after writing the checkpoint. This commit inhibits checkpointing containers started with '--rm' unless '--export' is used. If the checkpoint is exported it can easily be restored from the exported checkpoint, even if '--rm' is used. To restore a container from a checkpoint it is even necessary to manually run 'podman rm' if the container is not started with '--rm'. Signed-off-by: Adrian Reber <areber@redhat.com>
Diffstat (limited to 'libpod/container_internal_linux.go')
-rw-r--r--libpod/container_internal_linux.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go
index 2ecd5911a..f051f40e9 100644
--- a/libpod/container_internal_linux.go
+++ b/libpod/container_internal_linux.go
@@ -676,6 +676,10 @@ func (c *Container) checkpoint(ctx context.Context, options ContainerCheckpointO
return errors.Wrapf(define.ErrCtrStateInvalid, "%q is not running, cannot checkpoint", c.state.State)
}
+ if c.AutoRemove() && options.TargetFile == "" {
+ return errors.Errorf("Cannot checkpoint containers that have been started with '--rm' unless '--export' is used")
+ }
+
if err := c.checkpointRestoreLabelLog("dump.log"); err != nil {
return err
}