From 2ac4192bd3674577c6ab51d6d53a16cb291d0196 Mon Sep 17 00:00:00 2001 From: Matthew Heon Date: Thu, 11 Jan 2018 15:22:32 -0500 Subject: Add support for shared CGroup namespaces Signed-off-by: Matthew Heon Closes: #220 Approved by: rhatdan --- libpod/container.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libpod') diff --git a/libpod/container.go b/libpod/container.go index 89b042d12..7003396ac 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -81,6 +81,8 @@ const ( UserNS LinuxNS = iota // UTSNS is the UTS namespace UTSNS LinuxNS = iota + // CgroupNS is the CGroup namespace + CgroupNS LinuxNS = iota ) // String returns a string representation of a Linux namespace @@ -101,6 +103,8 @@ func (ns LinuxNS) String() string { return "user" case UTSNS: return "uts" + case CgroupNS: + return "cgroup" default: return "unknown" } @@ -920,6 +924,21 @@ func (c *Container) Init() (err error) { return err } } + if c.config.CgroupNsCtr != "" { + cgroupCtr, err := c.runtime.state.Container(c.config.CgroupNsCtr) + if err != nil { + return err + } + + nsPath, err := cgroupCtr.NamespacePath(CgroupNS) + if err != nil { + return err + } + + if err := g.AddOrReplaceLinuxNamespace(spec.CgroupNamespace, nsPath); err != nil { + return err + } + } c.runningSpec = g.Spec() c.runningSpec.Root.Path = c.state.Mountpoint -- cgit v1.2.3-54-g00ecf