diff options
author | Adrian Reber <areber@redhat.com> | 2019-11-28 19:04:35 +0000 |
---|---|---|
committer | Adrian Reber <areber@redhat.com> | 2019-11-28 20:25:45 +0100 |
commit | 5e43c7cde1da185f3a9dc4f949e778b087d4ea42 (patch) | |
tree | b5c48de998e469a17ca94788db81bceb0a289865 /libpod | |
parent | aa95726c98385fb75bc70b6de7a86c09ed74abd5 (diff) | |
download | podman-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')
-rw-r--r-- | libpod/container_internal_linux.go | 4 |
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 } |