diff --git a/daemon/execdriver/lxc/driver.go b/daemon/execdriver/lxc/driver.go index 72b8fa0945..f467b696c1 100644 --- a/daemon/execdriver/lxc/driver.go +++ b/daemon/execdriver/lxc/driver.go @@ -24,7 +24,6 @@ import ( "github.com/docker/libcontainer" "github.com/docker/libcontainer/cgroups" "github.com/docker/libcontainer/mount/nodes" - "github.com/docker/libcontainer/system" "github.com/kr/pty" ) @@ -135,6 +134,15 @@ func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, startCallba "--", c.InitPath, ) + if c.Network.Interface != nil { + params = append(params, + "-g", c.Network.Interface.Gateway, + "-i", fmt.Sprintf("%s/%d", c.Network.Interface.IPAddress, c.Network.Interface.IPPrefixLen), + ) + } + params = append(params, + "-mtu", strconv.Itoa(c.Network.Mtu), + ) if c.ProcessConfig.User != "" { params = append(params, "-u", c.ProcessConfig.User) @@ -217,19 +225,14 @@ func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, startCallba return terminate(err) } - started, err := system.GetProcessStartTime(pid) - if err != nil { - return terminate(err) - } cgroupPaths, err := cgroupPaths(c.ID) if err != nil { return terminate(err) } state := &libcontainer.State{ - InitPid: pid, - InitStartTime: started, - CgroupPaths: cgroupPaths, + InitPid: pid, + CgroupPaths: cgroupPaths, } if err := libcontainer.SaveState(dataPath, state); err != nil { diff --git a/daemon/execdriver/lxc/init.go b/daemon/execdriver/lxc/init.go index b7190df6a7..e99502667d 100644 --- a/daemon/execdriver/lxc/init.go +++ b/daemon/execdriver/lxc/init.go @@ -79,8 +79,11 @@ func getArgs() *InitArgs { var ( // Get cmdline arguments user = flag.String("u", "", "username or uid") + gateway = flag.String("g", "", "gateway address") + ip = flag.String("i", "", "ip address") workDir = flag.String("w", "", "workdir") privileged = flag.Bool("privileged", false, "privileged mode") + mtu = flag.Int("mtu", 1500, "interface mtu") capAdd = flag.String("cap-add", "", "capabilities to add") capDrop = flag.String("cap-drop", "", "capabilities to drop") ) @@ -89,9 +92,12 @@ func getArgs() *InitArgs { return &InitArgs{ User: *user, + Gateway: *gateway, + Ip: *ip, WorkDir: *workDir, Privileged: *privileged, Args: flag.Args(), + Mtu: *mtu, CapAdd: *capAdd, CapDrop: *capDrop, } diff --git a/integration-cli/docker_cli_help_test.go b/integration-cli/docker_cli_help_test.go index 415181bff4..2690b628bb 100644 --- a/integration-cli/docker_cli_help_test.go +++ b/integration-cli/docker_cli_help_test.go @@ -58,8 +58,8 @@ func TestHelpWidth(t *testing.T) { if len(line) > 80 { t.Fatalf("Line is too long(%d chars):\n%s", len(line), line) } - if home != "" && strings.Contains(line, home) { - t.Fatalf("Help for %q should use ~ instead of %q on:\n%s", command, home, line) + if scanForHome && strings.Contains(line, `=`+home) { + t.Fatalf("Line should use '%q' instead of %q:\n%s", homedir.GetShortcutString(), home, line) } if runtime.GOOS != "windows" { i := strings.Index(line, homedir.GetShortcutString())