Add support for --pid=container:<id>

Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
Upstream-commit: fb43ef649bc6aa11ca19c0e046518e85e1c7e2fa
Component: engine
This commit is contained in:
Mrunal Patel
2016-05-06 14:56:03 -04:00
parent f38f115e61
commit 612ad97231
9 changed files with 154 additions and 13 deletions

View File

@ -296,8 +296,25 @@ func setNamespaces(daemon *Daemon, s *specs.Spec, c *container.Container) error
setNamespace(s, ns)
}
// pid
if c.HostConfig.PidMode.IsHost() {
if c.HostConfig.PidMode.IsContainer() {
ns := specs.Namespace{Type: "pid"}
pc, err := daemon.getPidContainer(c)
if err != nil {
return err
}
ns.Path = fmt.Sprintf("/proc/%d/ns/pid", pc.State.GetPID())
setNamespace(s, ns)
if userNS {
// to share an PID namespace, they must also share a user namespace
nsUser := specs.Namespace{Type: "user"}
nsUser.Path = fmt.Sprintf("/proc/%d/ns/user", pc.State.GetPID())
setNamespace(s, nsUser)
}
} else if c.HostConfig.PidMode.IsHost() {
delNamespace(s, specs.NamespaceType("pid"))
} else {
ns := specs.Namespace{Type: "pid"}
setNamespace(s, ns)
}
// uts
if c.HostConfig.UTSMode.IsHost() {