123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package sysinit
- import (
- "flag"
- "fmt"
- "log"
- "os"
- "runtime"
- "github.com/docker/docker/daemon/execdriver"
- _ "github.com/docker/docker/daemon/execdriver/lxc"
- _ "github.com/docker/docker/daemon/execdriver/native"
- )
- func executeProgram(args *execdriver.InitArgs) error {
- dockerInitFct, err := execdriver.GetInitFunc(args.Driver)
- if err != nil {
- panic(err)
- }
- return dockerInitFct(args)
- }
- // Sys Init code
- // This code is run INSIDE the container and is responsible for setting
- // up the environment before running the actual process
- func SysInit() {
- // The very first thing that we should do is lock the thread so that other
- // system level options will work and not have issues, i.e. setns
- runtime.LockOSThread()
- if len(os.Args) <= 1 {
- fmt.Println("You should not invoke dockerinit manually")
- os.Exit(1)
- }
- var (
- // Get cmdline arguments
- user = flag.String("u", "", "username or uid")
- gateway = flag.String("g", "", "gateway address")
- ip = flag.String("i", "", "ip address")
- workDir = flag.String("w", "", "workdir")
- privileged = flag.Bool("privileged", false, "privileged mode")
- mtu = flag.Int("mtu", 1500, "interface mtu")
- driver = flag.String("driver", "", "exec driver")
- pipe = flag.Int("pipe", 0, "sync pipe fd")
- console = flag.String("console", "", "console (pty slave) path")
- root = flag.String("root", ".", "root path for configuration files")
- capAdd = flag.String("cap-add", "", "capabilities to add")
- capDrop = flag.String("cap-drop", "", "capabilities to drop")
- )
- flag.Parse()
- args := &execdriver.InitArgs{
- User: *user,
- Gateway: *gateway,
- Ip: *ip,
- WorkDir: *workDir,
- Privileged: *privileged,
- Args: flag.Args(),
- Mtu: *mtu,
- Driver: *driver,
- Console: *console,
- Pipe: *pipe,
- Root: *root,
- CapAdd: *capAdd,
- CapDrop: *capDrop,
- }
- if err := executeProgram(args); err != nil {
- log.Fatal(err)
- }
- }
|