execdriver flag for docker daemon
| ... | ... |
@@ -25,6 +25,7 @@ type DaemonConfig struct {
|
| 25 | 25 |
BridgeIP string |
| 26 | 26 |
InterContainerCommunication bool |
| 27 | 27 |
GraphDriver string |
| 28 |
+ ExecDriver string |
|
| 28 | 29 |
Mtu int |
| 29 | 30 |
DisableNetwork bool |
| 30 | 31 |
} |
| ... | ... |
@@ -43,6 +44,7 @@ func DaemonConfigFromJob(job *engine.Job) *DaemonConfig {
|
| 43 | 43 |
DefaultIp: net.ParseIP(job.Getenv("DefaultIp")),
|
| 44 | 44 |
InterContainerCommunication: job.GetenvBool("InterContainerCommunication"),
|
| 45 | 45 |
GraphDriver: job.Getenv("GraphDriver"),
|
| 46 |
+ ExecDriver: job.Getenv("ExecDriver"),
|
|
| 46 | 47 |
} |
| 47 | 48 |
if dns := job.GetenvList("Dns"); dns != nil {
|
| 48 | 49 |
config.Dns = dns |
| ... | ... |
@@ -39,6 +39,7 @@ func main() {
|
| 39 | 39 |
flDefaultIp = flag.String([]string{"#ip", "-ip"}, "0.0.0.0", "Default IP address to use when binding container ports")
|
| 40 | 40 |
flInterContainerComm = flag.Bool([]string{"#icc", "-icc"}, true, "Enable inter-container communication")
|
| 41 | 41 |
flGraphDriver = flag.String([]string{"s", "-storage-driver"}, "", "Force the docker runtime to use a specific storage driver")
|
| 42 |
+ flExecDriver = flag.String([]string{"e", "-exec-driver"}, "", "Force the docker runtime to use a specific exec driver")
|
|
| 42 | 43 |
flHosts = opts.NewListOpts(api.ValidateHost) |
| 43 | 44 |
flMtu = flag.Int([]string{"#mtu", "-mtu"}, 0, "Set the containers network MTU; if no value is provided: default to the default route MTU or 1500 if no default route is available")
|
| 44 | 45 |
) |
| ... | ... |
@@ -100,6 +101,7 @@ func main() {
|
| 100 | 100 |
job.Setenv("DefaultIp", *flDefaultIp)
|
| 101 | 101 |
job.SetenvBool("InterContainerCommunication", *flInterContainerComm)
|
| 102 | 102 |
job.Setenv("GraphDriver", *flGraphDriver)
|
| 103 |
+ job.Setenv("ExecDriver", *flExecDriver)
|
|
| 103 | 104 |
job.SetenvInt("Mtu", *flMtu)
|
| 104 | 105 |
if err := job.Run(); err != nil {
|
| 105 | 106 |
log.Fatal(err) |
| ... | ... |
@@ -79,6 +79,7 @@ Commands |
| 79 | 79 |
-p, --pidfile="/var/run/docker.pid": Path to use for daemon PID file |
| 80 | 80 |
-r, --restart=true: Restart previously running containers |
| 81 | 81 |
-s, --storage-driver="": Force the docker runtime to use a specific storage driver |
| 82 |
+ -e, --exec-driver="": Force the docker runtime to use a specific exec driver |
|
| 82 | 83 |
-v, --version=false: Print version information and quit |
| 83 | 84 |
--mtu=0: Set the containers network MTU; if no value is provided: default to the default route MTU or 1500 if no default route is available |
| 84 | 85 |
|
| ... | ... |
@@ -7,6 +7,7 @@ import ( |
| 7 | 7 |
"github.com/dotcloud/docker/dockerversion" |
| 8 | 8 |
"github.com/dotcloud/docker/engine" |
| 9 | 9 |
"github.com/dotcloud/docker/execdriver" |
| 10 |
+ "github.com/dotcloud/docker/execdriver/chroot" |
|
| 10 | 11 |
"github.com/dotcloud/docker/execdriver/lxc" |
| 11 | 12 |
"github.com/dotcloud/docker/graphdriver" |
| 12 | 13 |
"github.com/dotcloud/docker/graphdriver/aufs" |
| ... | ... |
@@ -703,7 +704,16 @@ func NewRuntimeFromDirectory(config *DaemonConfig, eng *engine.Engine) (*Runtime |
| 703 | 703 |
|
| 704 | 704 |
sysInfo := sysinfo.New(false) |
| 705 | 705 |
|
| 706 |
- ed, err := lxc.NewDriver(config.Root, sysInfo.AppArmor) |
|
| 706 |
+ var ed execdriver.Driver |
|
| 707 |
+ utils.Debugf("execDriver: provided %s", config.ExecDriver)
|
|
| 708 |
+ if config.ExecDriver == "chroot" && false {
|
|
| 709 |
+ // chroot is presently a noop driver https://github.com/dotcloud/docker/pull/4189#issuecomment-35330655 |
|
| 710 |
+ ed, err = chroot.NewDriver() |
|
| 711 |
+ utils.Debugf("execDriver: using chroot")
|
|
| 712 |
+ } else {
|
|
| 713 |
+ ed, err = lxc.NewDriver(config.Root, sysInfo.AppArmor) |
|
| 714 |
+ utils.Debugf("execDriver: using lxc")
|
|
| 715 |
+ } |
|
| 707 | 716 |
if err != nil {
|
| 708 | 717 |
return nil, err |
| 709 | 718 |
} |