浏览代码

'docker run' with no argument runs a shell in the base image

Solomon Hykes 12 年之前
父节点
当前提交
29410f43a0
共有 1 个文件被更改,包括 14 次插入4 次删除
  1. 14 4
      dockerd/dockerd.go

+ 14 - 4
dockerd/dockerd.go

@@ -597,11 +597,21 @@ func (srv *Server) CmdRun(stdin io.ReadCloser, stdout io.Writer, args ...string)
 	if err := flags.Parse(args); err != nil {
 		return nil
 	}
-	if flags.NArg() < 2 {
-		flags.Usage()
-		return nil
+	name := flag.Arg(0)
+	var cmd[]string
+	if len(flag.Args()) >= 2 {
+		cmd = flag.Args()[1:]
+	}
+	// Choose a default image if needed
+	if name == "" {
+		name = "base"
+	}
+	// Choose a default command if needed
+	if len(cmd) == 0 {
+		*fl_stdin = true
+		*fl_tty = false
+		cmd = []string{"/bin/sh"}
 	}
-	name, cmd := flags.Arg(0), flags.Args()[1:]
 	// Find the image
 	img := srv.images.Find(name)
 	if img == nil {