summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Reber <areber@redhat.com>2020-04-03 07:59:49 +0000
committerAdrian Reber <areber@redhat.com>2020-04-03 18:00:57 +0200
commit001fe983dfd6e6ae3f58e1f9bb1f61c189c98f9c (patch)
tree575b483fcab3e11411607b91cb580bb89d1d82ef
parent7660330ae22792d993d0b94c9be8417c7e848cb6 (diff)
downloadpodman-001fe983dfd6e6ae3f58e1f9bb1f61c189c98f9c.tar.gz
podman-001fe983dfd6e6ae3f58e1f9bb1f61c189c98f9c.tar.bz2
podman-001fe983dfd6e6ae3f58e1f9bb1f61c189c98f9c.zip
checkpoint: handle XDG_RUNTIME_DIR
For (almost) all commands which podman passes on to a OCI runtime XDG_RUNTIME_DIR is set to the same value. This does not happen for the checkpoint command. Using crun to checkpoint a container without this change will lead to crun using XDG_RUNTIME_DIR of the currently logged in user and so it will not find the container Podman wants to checkpoint. This bascially just copies a few lines from on of the other commands to handle 'checkpoint' as all the other commands. Thanks to Giuseppe for helping me with this. For 'restore' it is not needed as restore goes through conmon and for calling conmon Podman already configures XDG_RUNTIME_DIR correctly. Signed-off-by: Adrian Reber <areber@redhat.com>
-rw-r--r--libpod/oci_conmon_linux.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go
index e7cb99547..d1eec3c67 100644
--- a/libpod/oci_conmon_linux.go
+++ b/libpod/oci_conmon_linux.go
@@ -930,6 +930,13 @@ func (r *ConmonOCIRuntime) CheckpointContainer(ctr *Container, options Container
if options.TCPEstablished {
args = append(args, "--tcp-established")
}
+ runtimeDir, err := util.GetRuntimeDir()
+ if err != nil {
+ return err
+ }
+ if err = os.Setenv("XDG_RUNTIME_DIR", runtimeDir); err != nil {
+ return errors.Wrapf(err, "cannot set XDG_RUNTIME_DIR")
+ }
args = append(args, ctr.ID())
return utils.ExecCmdWithStdStreams(os.Stdin, os.Stdout, os.Stderr, nil, r.path, args...)
}