diff --git a/pkg/server/container_create_unix.go b/pkg/server/container_create_unix.go index 2793c21f2..6b5de7528 100644 --- a/pkg/server/container_create_unix.go +++ b/pkg/server/container_create_unix.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + "github.com/containerd/cgroups" "github.com/containerd/containerd/contrib/apparmor" "github.com/containerd/containerd/contrib/seccomp" "github.com/containerd/containerd/oci" @@ -223,7 +224,15 @@ func (c *criService) containerSpec(id string, sandboxID string, sandboxPid uint3 customopts.WithAnnotation(annotations.ContainerType, annotations.ContainerTypeContainer), customopts.WithAnnotation(annotations.SandboxID, sandboxID), ) - + // cgroupns is used for hiding /sys/fs/cgroup from containers. + // For compatibility, cgroupns is not used when running in cgroup v1 mode. + // https://github.com/containers/libpod/issues/4363 + if cgroups.Mode() == cgroups.Unified { + specOpts = append(specOpts, oci.WithLinuxNamespace( + runtimespec.LinuxNamespace{ + Type: runtimespec.CgroupNamespace, + })) + } return runtimeSpec(id, specOpts...) }