diff options
author | Giuseppe Scrivano <gscrivan@redhat.com> | 2018-11-23 23:39:25 +0100 |
---|---|---|
committer | Giuseppe Scrivano <gscrivan@redhat.com> | 2018-11-28 10:19:13 +0100 |
commit | 0365f573710dfc8ee7f9e13082a238deea675dec (patch) | |
tree | 55d679e5e734a686115bd14808d8c618be56c9f9 | |
parent | 6df7409cb5a41c710164c42ed35e33b28f3f7214 (diff) | |
download | podman-0365f573710dfc8ee7f9e13082a238deea675dec.tar.gz podman-0365f573710dfc8ee7f9e13082a238deea675dec.tar.bz2 podman-0365f573710dfc8ee7f9e13082a238deea675dec.zip |
rootless: fix cleanup
The conmon exit command is running inside of a namespace where the
process is running with uid=0. When it launches again podman for the
cleanup, podman is not running in rootless mode as the uid=0.
Export some more env variables to tell podman we are in rootless
mode.
Closes: https://github.com/containers/libpod/issues/1859
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
-rw-r--r-- | libpod/oci.go | 4 | ||||
-rw-r--r-- | test/e2e/rootless_test.go | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/libpod/oci.go b/libpod/oci.go index a7aec06e5..ee1677b67 100644 --- a/libpod/oci.go +++ b/libpod/oci.go @@ -316,6 +316,10 @@ func (r *OCIRuntime) createOCIContainer(ctr *Container, cgroupParent string, res cmd.Env = append(r.conmonEnv, fmt.Sprintf("_OCI_SYNCPIPE=%d", 3)) cmd.Env = append(cmd.Env, fmt.Sprintf("_OCI_STARTPIPE=%d", 4)) cmd.Env = append(cmd.Env, fmt.Sprintf("XDG_RUNTIME_DIR=%s", runtimeDir)) + cmd.Env = append(cmd.Env, fmt.Sprintf("_LIBPOD_USERNS_CONFIGURED=%s", os.Getenv("_LIBPOD_USERNS_CONFIGURED"))) + cmd.Env = append(cmd.Env, fmt.Sprintf("_LIBPOD_ROOTLESS_UID=%s", os.Getenv("_LIBPOD_ROOTLESS_UID"))) + cmd.Env = append(cmd.Env, fmt.Sprintf("HOME=%s", os.Getenv("HOME"))) + cmd.Env = append(cmd.Env, fmt.Sprintf("XDG_RUNTIME_DIR=%s", runtimeDir)) if r.reservePorts { ports, err := bindPorts(ctr.config.PortMappings) diff --git a/test/e2e/rootless_test.go b/test/e2e/rootless_test.go index 995744ae5..676459416 100644 --- a/test/e2e/rootless_test.go +++ b/test/e2e/rootless_test.go @@ -205,6 +205,10 @@ var _ = Describe("Podman rootless", func() { cmd.WaitWithDefaultTimeout() Expect(cmd.ExitCode()).To(Equal(0)) + cmd = rootlessTest.PodmanAsUser([]string{"inspect", "-l", "--type", "container", "--format", "{{ .State.Status }}"}, 1000, 1000, env) + cmd.WaitWithDefaultTimeout() + Expect(cmd.LineInOutputContains("exited")).To(BeTrue()) + cmd = rootlessTest.PodmanAsUser([]string{"start", "-l"}, 1000, 1000, env) cmd.WaitWithDefaultTimeout() Expect(cmd.ExitCode()).To(Equal(0)) |