diff --git a/docker/docker.go b/docker/docker.go index 2e73009870..3c3da5e378 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -160,7 +160,7 @@ func Fatal(err error) { func main() { var err error - if IsTerminal(0) { + if IsTerminal(0) && os.Getenv("NORAW") == "" { oldState, err = MakeRaw(0) if err != nil { panic(err) @@ -185,9 +185,10 @@ func main() { if err := <-receive_stdout; err != nil { Fatal(err) } - if IsTerminal(0) { + if oldState != nil { Restore(0, oldState) - } else { + } + if !IsTerminal(0) { if err := <-send_stdin; err != nil { Fatal(err) } diff --git a/dockerd/dockerd.go b/dockerd/dockerd.go index 79b373ad43..f08dea103d 100644 --- a/dockerd/dockerd.go +++ b/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 { diff --git a/dockerd/dockerweb.html b/dockerd/dockerweb.html index 67cafa4e00..da1e61f0ea 100644 --- a/dockerd/dockerweb.html +++ b/dockerd/dockerweb.html @@ -188,7 +188,7 @@ b)}catch(f){i(f,"onCommandChange");throw f;}t()},commands:x});O.append(b);l.enab if (command !== '') { console.log(command); try { - var url = "http://localhost:8080/" + command.split(" ")[0] + "?" + $.param(command.split(" ").slice(1).map(function(e) { return {name: "q", value: e} })) + var url = "/" + command.split(" ")[0] + "?" + $.param(command.split(" ").slice(1).map(function(e) { return {name: "q", value: e} })) console.log(url); $.ajax(url).done(function(data) { term.echo(new String(data));