Add support for shared CGroup namespaces

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>

Closes: #220
Approved by: rhatdan
This commit is contained in:
Matthew Heon
2018-01-11 15:22:32 -05:00
committed by Atomic Bot
parent fe0e1cd11b
commit 2ac4192bd3

View File

@ -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