mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Fix bug in attach handling for docker exec. Add docs for 'docker exec' feature.
Docker-DCO-1.1-Signed-off-by: Vishnu Kannan <vishnuk@google.com> (github: vishh)
This commit is contained in:
parent
e1cf95b593
commit
d130c10ab7
2 changed files with 36 additions and 7 deletions
|
@ -87,22 +87,22 @@ func (d *Daemon) ContainerExec(job *engine.Job) engine.Status {
|
|||
execConfig.StreamConfig.stdinPipe = ioutils.NopWriteCloser(ioutil.Discard) // Silently drop stdin
|
||||
}
|
||||
|
||||
var execErr, attachErr chan error
|
||||
go func() {
|
||||
attachErr = d.Attach(&execConfig.StreamConfig, config.AttachStdin, false, config.Tty, cStdin, cStdinCloser, cStdout, cStderr)
|
||||
}()
|
||||
attachErr := d.Attach(&execConfig.StreamConfig, config.AttachStdin, false, config.Tty, cStdin, cStdinCloser, cStdout, cStderr)
|
||||
|
||||
execErr := make(chan error)
|
||||
go func() {
|
||||
err := container.Exec(execConfig)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Cannot run in container %s: %s", name, err)
|
||||
execErr <- fmt.Errorf("Cannot run in container %s: %s", name, err)
|
||||
}
|
||||
execErr <- err
|
||||
}()
|
||||
|
||||
select {
|
||||
case err := <-attachErr:
|
||||
return job.Errorf("attach failed with error: %s", err)
|
||||
if err != nil {
|
||||
return job.Errorf("attach failed with error: %s", err)
|
||||
}
|
||||
break
|
||||
case err := <-execErr:
|
||||
return job.Error(err)
|
||||
}
|
||||
|
|
29
docs/man/docker-exec.md
Normal file
29
docs/man/docker-exec.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
% 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.
|
Loading…
Reference in a new issue