mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
6c266c4b42
This moves the bind mounts like /.dockerinit, /etc/hostname, volumes, etc into the container namespace, by setting them up using lxc. This is useful to avoid littering the global namespace with a lot of mounts that are internal to each container and are not generally needed on the outside. In particular, it seems that having a lot of mounts is problematic wrt scaling to a lot of containers on systems where the root filesystem is mounted --rshared. Note that the "private" option is only supported by the native driver, as lxc doesn't support setting this. This is not a huge problem, but it does mean that some mounts are unnecessarily shared inside the container if you're using the lxc driver. Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
23 lines
741 B
Go
23 lines
741 B
Go
package execdrivers
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/dotcloud/docker/execdriver"
|
|
"github.com/dotcloud/docker/execdriver/lxc"
|
|
"github.com/dotcloud/docker/execdriver/native"
|
|
"github.com/dotcloud/docker/pkg/sysinfo"
|
|
"path"
|
|
)
|
|
|
|
func NewDriver(name, root, initPath string, sysInfo *sysinfo.SysInfo) (execdriver.Driver, error) {
|
|
switch name {
|
|
case "lxc":
|
|
// we want to five the lxc driver the full docker root because it needs
|
|
// to access and write config and template files in /var/lib/docker/containers/*
|
|
// to be backwards compatible
|
|
return lxc.NewDriver(root, sysInfo.AppArmor)
|
|
case "native":
|
|
return native.NewDriver(path.Join(root, "execdriver", "native"), initPath)
|
|
}
|
|
return nil, fmt.Errorf("unknown exec driver %s", name)
|
|
}
|