execdrivers.go 899 B

123456789101112131415161718192021222324252627282930
  1. package execdrivers
  2. import (
  3. "fmt"
  4. "path"
  5. "github.com/docker/docker/daemon/execdriver"
  6. "github.com/docker/docker/daemon/execdriver/lxc"
  7. "github.com/docker/docker/daemon/execdriver/native"
  8. "github.com/docker/docker/pkg/sysinfo"
  9. "github.com/docker/docker/pkg/system"
  10. )
  11. func NewDriver(name, root, initPath string, sysInfo *sysinfo.SysInfo) (execdriver.Driver, error) {
  12. meminfo, err := system.ReadMemInfo()
  13. if err != nil {
  14. return nil, err
  15. }
  16. switch name {
  17. case "lxc":
  18. // we want to give the lxc driver the full docker root because it needs
  19. // to access and write config and template files in /var/lib/docker/containers/*
  20. // to be backwards compatible
  21. return lxc.NewDriver(root, initPath, sysInfo.AppArmor)
  22. case "native":
  23. return native.NewDriver(path.Join(root, "execdriver", "native"), initPath, meminfo.MemTotal)
  24. }
  25. return nil, fmt.Errorf("unknown exec driver %s", name)
  26. }