當前位置: 首頁>>代碼示例>>Golang>>正文


Golang libcontainer.New函數代碼示例

本文整理匯總了Golang中github.com/opencontainers/runc/libcontainer.New函數的典型用法代碼示例。如果您正苦於以下問題:Golang New函數的具體用法?Golang New怎麽用?Golang New使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了New函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: TestMain

func TestMain(m *testing.M) {
	var (
		err error
		ret int = 0
	)

	logrus.SetOutput(os.Stderr)
	logrus.SetLevel(logrus.InfoLevel)

	factory, err = libcontainer.New(".", libcontainer.Cgroupfs)
	if err != nil {
		logrus.Error(err)
		os.Exit(1)
	}
	if systemd.UseSystemd() {
		systemdFactory, err = libcontainer.New(".", libcontainer.SystemdCgroups)
		if err != nil {
			logrus.Error(err)
			os.Exit(1)
		}
	}

	ret = m.Run()
	os.Exit(ret)
}
開發者ID:jak-atx,項目名稱:vic,代碼行數:25,代碼來源:init_test.go

示例2: loadFactory

// loadFactory returns the configured factory instance for execing containers.
func loadFactory(context *cli.Context) (libcontainer.Factory, error) {
	var (
		debug = "false"
		root  = context.GlobalString("root")
	)
	if context.GlobalBool("debug") {
		debug = "true"
	}
	abs, err := filepath.Abs(root)
	if err != nil {
		return nil, err
	}
	logAbs, err := filepath.Abs(context.GlobalString("log"))
	if err != nil {
		return nil, err
	}
	return libcontainer.New(abs, libcontainer.Cgroupfs, func(l *libcontainer.LinuxFactory) error {
		l.CriuPath = context.GlobalString("criu")
		return nil
	},
		libcontainer.InitArgs(os.Args[0],
			"--log", logAbs,
			"--log-format", context.GlobalString("log-format"),
			fmt.Sprintf("--debug=%s", debug),
			"init"),
	)
}
開發者ID:adfernandes,項目名稱:runc,代碼行數:28,代碼來源:utils.go

示例3: init

// init runs the libcontainer initialization code because of the busybox style needs
// to work around the go runtime and the issues with forking
func init() {
	if len(os.Args) < 2 || os.Args[1] != "init" {
		return
	}
	runtime.GOMAXPROCS(1)
	runtime.LockOSThread()
	factory, err := libcontainer.New("")
	if err != nil {
		logrus.Fatalf("unable to initialize for container: %s", err)
	}
	if err := factory.StartInitialization(); err != nil {
		// return proper unix error codes
		if exerr, ok := err.(*exec.Error); ok {
			switch exerr.Err {
			case os.ErrPermission:
				fmt.Fprintln(os.Stderr, err)
				os.Exit(126)
			case exec.ErrNotFound:
				fmt.Fprintln(os.Stderr, err)
				os.Exit(127)
			default:
				if os.IsNotExist(exerr.Err) {
					fmt.Fprintf(os.Stderr, "exec: %s: %v\n", strconv.Quote(exerr.Name), os.ErrNotExist)
					os.Exit(127)
				}
			}
		}
		logrus.Fatal(err)
	}
	panic("init: init failed to start contianer")
}
開發者ID:jak-atx,項目名稱:vic,代碼行數:33,代碼來源:init_test.go

示例4: createFactory

func createFactory() (libcontainer.Factory, error) {
	abs, err := filepath.Abs(runc_root)
	if err != nil {
		return nil, err
	}
	return libcontainer.New(abs, libcontainer.Cgroupfs, func(l *libcontainer.LinuxFactory) error {
		l.CriuPath = "criu"
		return nil
	})
}
開發者ID:fluter01,項目名稱:lotsawa,代碼行數:10,代碼來源:sandbox.go

示例5: runInit

func runInit() {
	runtime.GOMAXPROCS(1)
	runtime.LockOSThread()
	factory, _ := libcontainer.New("")
	if err := factory.StartInitialization(); err != nil {
		// as the error is sent back to the parent there is no need to log
		// or write it to stderr because the parent process will handle this
		os.Exit(1)
	}
	panic("libcontainer: container init failed to exec")
}
開發者ID:xee5ch,項目名稱:binctr,代碼行數:11,代碼來源:main.go

示例6: init

func init() {
	if len(os.Args) > 1 && os.Args[1] == "init" {
		runtime.GOMAXPROCS(1)
		runtime.LockOSThread()
		factory, _ := libcontainer.New("")
		if err := factory.StartInitialization(); err != nil {
			fatal(err)
		}
		panic("libcontainer: container init failed to exec")
	}
}
開發者ID:runcom,項目名稱:runc,代碼行數:11,代碼來源:start.go

示例7: loadFactory

// loadFactory returns the configured factory instance for execing containers.
func loadFactory(context *cli.Context) (libcontainer.Factory, error) {
	root := context.GlobalString("root")
	abs, err := filepath.Abs(root)
	if err != nil {
		return nil, err
	}
	return libcontainer.New(abs, libcontainer.Cgroupfs, func(l *libcontainer.LinuxFactory) error {
		l.CriuPath = context.GlobalString("criu")
		return nil
	})
}
開發者ID:pagarme,項目名稱:runc,代碼行數:12,代碼來源:utils.go

示例8: init

func init() {
	if len(os.Args) > 1 && os.Args[1] == "init" {
		goruntime.GOMAXPROCS(1)
		goruntime.LockOSThread()
		factory, _ := libcontainer.New("")
		if err := factory.StartInitialization(); err != nil {
			fmt.Fprint(os.Stderr, err)
			os.Exit(1)
		}
		panic("--this line should have never been executed, congratulations--")
	}
}
開發者ID:spheromak,項目名稱:containerd,代碼行數:12,代碼來源:linux.go

示例9: NewRuntime

func NewRuntime(stateDir string) (runtime.Runtime, error) {
	f, err := libcontainer.New(stateDir, libcontainer.Cgroupfs, func(l *libcontainer.LinuxFactory) error {
		//l.CriuPath = context.GlobalString("criu")
		return nil
	})
	if err != nil {
		return nil, err
	}
	return &libcontainerRuntime{
		factory: f,
	}, nil
}
開發者ID:spheromak,項目名稱:containerd,代碼行數:12,代碼來源:linux.go

示例10: getContainerResources

func getContainerResources(id string) (*specs.Resources, error) {
	specPath := specFile

	// if we are passed a containerID get the bundle dir to get the spec file
	if containerID != "" && root != "" {
		abs, err := filepath.Abs(root)
		if err != nil {
			return nil, err
		}

		// check to make sure a container exists with this ID
		s := path.Join(abs, id, stateFile)
		if _, err := os.Stat(s); os.IsNotExist(err) {
			return nil, fmt.Errorf("State file %s does not exist", s)
		}

		// create the factory
		factory, err := libcontainer.New(abs, libcontainer.Cgroupfs, func(l *libcontainer.LinuxFactory) error {
			return nil
		})
		if err != nil {
			return nil, err
		}

		// get the container
		container, err := factory.Load(id)
		if err != nil {
			return nil, err
		}

		bundle := searchLabels(container.Config().Labels, "bundle")
		specPath = path.Join(bundle, specFile)
	}

	// read the runtime.json for the container so we know things like limits set
	// this is only if a container ID is not passed we assume we are in a directory
	// with a config.json containing the spec
	f, err := os.Open(specPath)
	if err != nil {
		if os.IsNotExist(err) {
			return nil, fmt.Errorf("JSON runtime config file %s not found", specFile)
		}
		logrus.Fatal(err)
	}
	defer f.Close()

	var spec specs.Spec
	if err = json.NewDecoder(f).Decode(&spec); err != nil {
		return nil, err
	}
	return spec.Linux.Resources, nil
}
開發者ID:jfrazelle,項目名稱:magneto,代碼行數:52,代碼來源:main.go

示例11: initializer

func initializer() {
	runtime.GOMAXPROCS(1)
	runtime.LockOSThread()
	factory, err := libcontainer.New("")
	if err != nil {
		fatal(err)
	}
	if err := factory.StartInitialization(); err != nil {
		fatal(err)
	}

	panic("unreachable")
}
開發者ID:asazernik,項目名稱:docker,代碼行數:13,代碼來源:init.go

示例12: init

// init runs the libcontainer initialization code because of the busybox style needs
// to work around the go runtime and the issues with forking
func init() {
	if len(os.Args) < 2 || os.Args[1] != "init" {
		return
	}
	runtime.GOMAXPROCS(1)
	runtime.LockOSThread()
	factory, err := libcontainer.New("")
	if err != nil {
		logrus.Fatalf("unable to initialize for container: %s", err)
	}
	if err := factory.StartInitialization(); err != nil {
		logrus.Fatal(err)
	}
}
開發者ID:Altiscale,項目名稱:runc,代碼行數:16,代碼來源:init_test.go

示例13: TestTmpfsCopyUp

func TestTmpfsCopyUp(t *testing.T) {
	if testing.Short() {
		return
	}
	root, err := newTestRoot()
	ok(t, err)
	defer os.RemoveAll(root)

	rootfs, err := newRootfs()
	ok(t, err)
	defer remove(rootfs)

	config := newTemplateConfig(rootfs)

	config.Mounts = append(config.Mounts, &configs.Mount{
		Source:      "tmpfs",
		Destination: "/etc",
		Device:      "tmpfs",
		Extensions:  configs.EXT_COPYUP,
	})

	factory, err := libcontainer.New(root, libcontainer.Cgroupfs)
	ok(t, err)

	container, err := factory.Create("test", config)
	ok(t, err)
	defer container.Destroy()

	var stdout bytes.Buffer
	pconfig := libcontainer.Process{
		Args:   []string{"ls", "/etc/passwd"},
		Env:    standardEnvironment,
		Stdin:  nil,
		Stdout: &stdout,
	}
	err = container.Run(&pconfig)
	ok(t, err)

	// Wait for process
	waitProcess(&pconfig, t)

	outputLs := string(stdout.Bytes())

	// Check that the ls output has /etc/passwd
	if !strings.Contains(outputLs, "/etc/passwd") {
		t.Fatalf("/etc/passwd not copied up as expected: %v", outputLs)
	}
}
開發者ID:rhvgoyal,項目名稱:runc,代碼行數:48,代碼來源:exec_test.go

示例14: loadFactory

// loadFactory returns the configured factory instance for execing containers.
func loadFactory(context *cli.Context) (libcontainer.Factory, error) {
	root := context.GlobalString("root")
	abs, err := filepath.Abs(root)
	if err != nil {
		return nil, err
	}
	cgroupManager := libcontainer.Cgroupfs
	if context.GlobalBool("systemd-cgroup") {
		if systemd.UseSystemd() {
			cgroupManager = libcontainer.SystemdCgroups
		} else {
			return nil, fmt.Errorf("systemd cgroup flag passed, but systemd support for managing cgroups is not available")
		}
	}
	return libcontainer.New(abs, cgroupManager, libcontainer.CriuPath(context.GlobalString("criu")))
}
開發者ID:curtiszimmerman,項目名稱:runc,代碼行數:17,代碼來源:utils_linux.go

示例15: init

func init() {
	var err error
	if storeDir, err = filepath.Abs(".acbuild"); err != nil {
		log.Fatal("failed to get abspath: %v", err)
	}

	if len(os.Args) > 1 && os.Args[1] == "init" {
		runtime.GOMAXPROCS(1)
		runtime.LockOSThread()
		factory, _ := libcontainer.New("")
		if err := factory.StartInitialization(); err != nil {
			log.Fatal(fmt.Errorf("failed to initialize factory, err: %v", err))
		}
		panic("--this line should never been executed, congratulations--")
	}
}
開發者ID:klizhentas,項目名稱:acbuild,代碼行數:16,代碼來源:main.go


注:本文中的github.com/opencontainers/runc/libcontainer.New函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。