Implement podman run option --cgroup-parent

Example:

sudo /usr/local/bin/podman run --cgroup-parent=/zzz fedora cat /proc/self/cgroup

Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #370
Approved by: rhatdan
This commit is contained in:
Jhon Honce
2018-02-20 10:29:41 -07:00
committed by Atomic Bot
parent f1f0f37dc1
commit 3f004df384
4 changed files with 9 additions and 3 deletions

View File

@ -72,12 +72,17 @@ func runCmd(c *cli.Context) error {
options = append(options, libpod.WithUser(createConfig.User))
options = append(options, libpod.WithShmDir(createConfig.ShmDir))
options = append(options, libpod.WithShmSize(createConfig.Resources.ShmSize))
options = append(options, libpod.WithCgroupParent(createConfig.CgroupParent))
ctr, err := runtime.NewContainer(runtimeSpec, options...)
if err != nil {
return err
}
logrus.Debug("new container created ", ctr.ID())
p, _ := ctr.CGroupPath()("")
logrus.Debugf("createConfig.CgroupParent %v for %v", p, ctr.ID())
if err := ctr.Init(); err != nil {
// This means the command did not exist
exitCode = 127

View File

@ -38,7 +38,7 @@ const (
)
// CgroupParent is the default prefix to a cgroup path in libpod
var CgroupParent = "/libpod_parent"
var DefaultCgroupParent = "/libpod_parent"
// LinuxNS represents a Linux namespace
type LinuxNS int

View File

@ -146,7 +146,7 @@ func newContainer(rspec *spec.Spec, lockDir string) (*Container, error) {
ctr.config.CreatedTime = time.Now()
ctr.config.ShmSize = DefaultShmSize
ctr.config.CgroupParent = CgroupParent
ctr.config.CgroupParent = DefaultCgroupParent
// Path our lock file will reside at
lockPath := filepath.Join(lockDir, ctr.config.ID)

View File

@ -656,6 +656,7 @@ func WithLogPath(path string) CtrCreateOption {
}
// WithCgroupParent sets the Cgroup Parent of the new container
// Default used if not overridden on command line
func WithCgroupParent(parent string) CtrCreateOption {
return func(ctr *Container) error {
if ctr.valid {
@ -663,7 +664,7 @@ func WithCgroupParent(parent string) CtrCreateOption {
}
if parent == "" {
return errors.Wrapf(ErrInvalidArg, "cgroup parent cannot be empty")
return nil
}
ctr.config.CgroupParent = parent