Browse Source

Removing 'exec' feature from the CLI until the docker daemon supports resizing of
tty sessions for exec'ed commands.

Docker-DCO-1.1-Signed-off-by: Vishnu Kannan <vishnuk@google.com> (github: vishh)

Vishnu Kannan 10 years ago
parent
commit
0029180f7f
3 changed files with 0 additions and 134 deletions
  1. 0 74
      api/client/commands.go
  2. 0 29
      docs/man/docker-exec.md
  3. 0 31
      docs/sources/reference/commandline/cli.md

+ 0 - 74
api/client/commands.go

@@ -2299,77 +2299,3 @@ func (cli *DockerCli) CmdLoad(args ...string) error {
 	}
 	return nil
 }
-
-func (cli *DockerCli) CmdExec(args ...string) error {
-	cmd := cli.Subcmd("exec", "[OPTIONS] CONTAINER COMMAND [ARG...]", "Run a command in an existing container")
-
-	execConfig, err := runconfig.ParseExec(cmd, args)
-	if err != nil {
-		return err
-	}
-	if execConfig.Container == "" {
-		cmd.Usage()
-		return nil
-	}
-
-	if execConfig.Detach {
-		_, _, err := cli.call("POST", "/containers/"+execConfig.Container+"/exec", execConfig, false)
-		return err
-	}
-	var (
-		out, stderr io.Writer
-		in          io.ReadCloser
-		// We need to instanciate the chan because the select needs it. It can
-		// be closed but can't be uninitialized.
-		hijacked = make(chan io.Closer)
-		errCh    chan error
-	)
-	// Block the return until the chan gets closed
-	defer func() {
-		log.Debugf("End of CmdExec(), Waiting for hijack to finish.")
-		if _, ok := <-hijacked; ok {
-			log.Errorf("Hijack did not finish (chan still open)")
-		}
-	}()
-
-	if execConfig.AttachStdin {
-		in = cli.in
-	}
-	if execConfig.AttachStdout {
-		out = cli.out
-	}
-	if execConfig.AttachStderr {
-		if execConfig.Tty {
-			stderr = cli.out
-		} else {
-			stderr = cli.err
-		}
-	}
-	errCh = utils.Go(func() error {
-		return cli.hijack("POST", "/containers/"+execConfig.Container+"/exec?", execConfig.Tty, in, out, stderr, hijacked, execConfig)
-	})
-
-	// Acknowledge the hijack before starting
-	select {
-	case closer := <-hijacked:
-		// Make sure that hijack gets closed when returning. (result
-		// in closing hijack chan and freeing server's goroutines.
-		if closer != nil {
-			defer closer.Close()
-		}
-	case err := <-errCh:
-		if err != nil {
-			log.Debugf("Error hijack: %s", err)
-			return err
-		}
-	}
-	// TODO(vishh): Enable tty size monitoring once the daemon can support that.
-	if errCh != nil {
-		if err := <-errCh; err != nil {
-			log.Debugf("Error hijack: %s", err)
-			return err
-		}
-	}
-
-	return nil
-}

+ 0 - 29
docs/man/docker-exec.md

@@ -1,29 +0,0 @@
-% DOCKER(1) Docker User Manuals
-% Docker Community
-% SEPT 2014
-# NAME
-docker-exec - Run a command in an existing container
-
-# SYNOPSIS
-**docker exec**
-[**-d**|**--detach**[=*false*]]
-[**-i**|**--interactive**[=*false*]]
-[**-t**|**--tty**[=*false*]]
- CONTAINER COMMAND [ARG...]
-
-# DESCRIPTION
-
-Run a process in an existing container. The existing CONTAINER needs is active.
-
-# Options
-
-**-d**, **--detach**=*true*|*false*
-   Detached mode. This runs the new process in the background.
-
-**-i**, **--interactive**=*true*|*false*
-   When set to true, keep stdin open even if not attached. The default is false.
-
-**-t**, **--tty**=*true*|*false*
-   When set to true Docker can allocate a pseudo-tty and attach to the standard
-input of the process. This can be used, for example, to run a throwaway
-interactive shell. The default is value is false.

+ 0 - 31
docs/sources/reference/commandline/cli.md

@@ -1295,37 +1295,6 @@ It is even useful to cherry-pick particular tags of an image repository
 
    $ sudo docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
 
-## exec
-
-    Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-
-    Run a command in an existing container
-
-      -d, --detach=false         Detached mode: run the process in the background and exit
-      -i, --interactive=false    Keep STDIN open even if not attached
-      -t, --tty=false            Allocate a pseudo-TTY
-
-The `docker exec` command runs a user specified command as a new process in an existing
-user specified container. The container needs to be active.
-
-The `docker exec` command will typically be used after `docker run`.
-
-### Examples:
-
-    $ sudo docker run --name ubuntu_bash --rm -i -t ubuntu bash
-
-This will create a container named 'ubuntu_bash' and start a bash session.
-
-    $ sudo docker exec -d ubuntu_bash touch /tmp/execWorks
-
-This will create a new file '/tmp/execWorks' inside the existing and active container
-'ubuntu_bash', in the background.
-
-    $ sudo docker exec ubuntu_bash -it bash
-
-This will create a new bash session in the container 'ubuntu_bash'.
-
-
 ## search
 
 Search [Docker Hub](https://hub.docker.com) for images