diff options
author | Adrian Reber <areber@redhat.com> | 2020-04-03 07:59:49 +0000 |
---|---|---|
committer | Adrian Reber <areber@redhat.com> | 2020-04-03 18:00:57 +0200 |
commit | 001fe983dfd6e6ae3f58e1f9bb1f61c189c98f9c (patch) | |
tree | 575b483fcab3e11411607b91cb580bb89d1d82ef | |
parent | 7660330ae22792d993d0b94c9be8417c7e848cb6 (diff) | |
download | podman-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.go | 7 |
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...) } |