func init() { execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error { if err := setupHostname(args); err != nil { return err } if err := setupNetworking(args); err != nil { return err } if err := setupCapabilities(args); err != nil { return err } if err := setupWorkingDirectory(args); err != nil { return err } if err := changeUser(args); err != nil { return err } path, err := exec.LookPath(args.Args[0]) if err != nil { log.Printf("Unable to locate %v", args.Args[0]) os.Exit(127) } if err := syscall.Exec(path, args.Args, os.Environ()); err != nil { return fmt.Errorf("dockerinit unable to execute %s - %s", path, err) } panic("Unreachable") }) }
func init() { execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error { var ( container *libcontainer.Container ns = nsinit.NewNsInit(&nsinit.DefaultCommandFactory{}, &nsinit.DefaultStateWriter{args.Root}) ) f, err := os.Open(filepath.Join(args.Root, "container.json")) if err != nil { return err } if err := json.NewDecoder(f).Decode(&container); err != nil { f.Close() return err } f.Close() cwd, err := os.Getwd() if err != nil { return err } syncPipe, err := nsinit.NewSyncPipeFromFd(0, uintptr(args.Pipe)) if err != nil { return err } if err := ns.Init(container, cwd, args.Console, syncPipe, args.Args); err != nil { return err } return nil }) }
func init() { execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error { if err := mount.ForceMount("proc", "proc", "proc", ""); err != nil { return err } defer mount.ForceUnmount("proc") cmd := exec.Command(args.Args[0], args.Args[1:]...) cmd.Stderr = os.Stderr cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin return cmd.Run() }) }