From 8c142c612737f45fb97d9ad949b1c3bd42d38c71 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 29 Jan 2013 15:24:39 -0800 Subject: [PATCH 1/4] export NORAW=1 to disable raw mode in the client --- docker/docker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/docker.go b/docker/docker.go index 2e73009870..f42d1ff4e2 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,7 +185,7 @@ func main() { if err := <-receive_stdout; err != nil { Fatal(err) } - if IsTerminal(0) { + if IsTerminal(0) && os.Getenv("NORAW") == "" { Restore(0, oldState) } else { if err := <-send_stdin; err != nil { From 35f5cc239bea6931cf92459236a827762e040023 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 29 Jan 2013 15:30:32 -0800 Subject: [PATCH 2/4] Fix web UI to work on remote URLs --- dockerd/dockerweb.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)); From d5be77075a6e3dbc8ea167d4c5ab60663b0dbe68 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 29 Jan 2013 15:37:54 -0800 Subject: [PATCH 3/4] Fix a bug which caused the client to never exit in interactive mode when NORAW is set. --- docker/docker.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/docker.go b/docker/docker.go index f42d1ff4e2..3c3da5e378 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -185,9 +185,10 @@ func main() { if err := <-receive_stdout; err != nil { Fatal(err) } - if IsTerminal(0) && os.Getenv("NORAW") == "" { + if oldState != nil { Restore(0, oldState) - } else { + } + if !IsTerminal(0) { if err := <-send_stdin; err != nil { Fatal(err) } From 29410f43a0e576f3c7fe27456af2888cb8f9bc5f Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 29 Jan 2013 15:51:04 -0800 Subject: [PATCH 4/4] 'docker run' with no argument runs a shell in the base image --- dockerd/dockerd.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) 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 {