Refactor init actions into separate types

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby
2015-02-06 12:48:57 -08:00
parent 5fc19e8db5
commit 8850636eb3
12 changed files with 638 additions and 555 deletions

35
linux_setns_init.go Normal file
View File

@@ -0,0 +1,35 @@
// +build linux
package libcontainer
import (
"github.com/docker/libcontainer/apparmor"
"github.com/docker/libcontainer/configs"
"github.com/docker/libcontainer/label"
"github.com/docker/libcontainer/system"
)
// linuxSetnsInit performs the container's initialization for running a new process
// inside an existing container.
type linuxSetnsInit struct {
args []string
config *configs.Config
}
func (l *linuxSetnsInit) Init() error {
if err := setupRlimits(l.config); err != nil {
return err
}
if err := finalizeNamespace(l.config); err != nil {
return err
}
if err := apparmor.ApplyProfile(l.config.AppArmorProfile); err != nil {
return err
}
if l.config.ProcessLabel != "" {
if err := label.SetProcessLabel(l.config.ProcessLabel); err != nil {
return err
}
}
return system.Execv(l.args[0], l.args[0:], l.config.Env)
}