mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
abi: create new cgroup when running in a container
if podman is running in the root cgroup, it will create a new subcgroup and move itself there. [NO NEW TESTS NEEDED] it needs nested podman Closes: https://github.com/containers/podman/issues/14884 Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
@ -67,6 +67,18 @@ func (ic *ContainerEngine) Info(ctx context.Context) (*define.Info, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ic *ContainerEngine) SetupRootless(_ context.Context, noMoveProcess bool) error {
|
func (ic *ContainerEngine) SetupRootless(_ context.Context, noMoveProcess bool) error {
|
||||||
|
runsUnderSystemd := utils.RunsOnSystemd()
|
||||||
|
if !runsUnderSystemd {
|
||||||
|
isPid1 := os.Getpid() == 1
|
||||||
|
if _, found := os.LookupEnv("container"); isPid1 || found {
|
||||||
|
if err := utils.MaybeMoveToSubCgroup(); err != nil {
|
||||||
|
// it is a best effort operation, so just print the
|
||||||
|
// error for debugging purposes.
|
||||||
|
logrus.Debugf("Could not move to subcgroup: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !rootless.IsRootless() {
|
if !rootless.IsRootless() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -86,7 +98,6 @@ func (ic *ContainerEngine) SetupRootless(_ context.Context, noMoveProcess bool)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
runsUnderSystemd := utils.RunsOnSystemd()
|
|
||||||
unitName := fmt.Sprintf("podman-%d.scope", os.Getpid())
|
unitName := fmt.Sprintf("podman-%d.scope", os.Getpid())
|
||||||
if runsUnderSystemd || conf.Engine.CgroupManager == config.SystemdCgroupsManager {
|
if runsUnderSystemd || conf.Engine.CgroupManager == config.SystemdCgroupsManager {
|
||||||
if err := utils.RunUnderSystemdScope(os.Getpid(), "user.slice", unitName); err != nil {
|
if err := utils.RunUnderSystemdScope(os.Getpid(), "user.slice", unitName); err != nil {
|
||||||
|
Reference in New Issue
Block a user