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
|
execConfig.StreamConfig.stdinPipe = ioutils.NopWriteCloser(ioutil.Discard) // Silently drop stdin
|
||||||
}
|
}
|
||||||
|
|
||||||
var execErr, attachErr chan error
|
attachErr := d.Attach(&execConfig.StreamConfig, config.AttachStdin, false, config.Tty, cStdin, cStdinCloser, cStdout, cStderr)
|
||||||
go func() {
|
|
||||||
attachErr = d.Attach(&execConfig.StreamConfig, config.AttachStdin, false, config.Tty, cStdin, cStdinCloser, cStdout, cStderr)
|
|
||||||
}()
|
|
||||||
|
|
||||||
|
execErr := make(chan error)
|
||||||
go func() {
|
go func() {
|
||||||
err := container.Exec(execConfig)
|
err := container.Exec(execConfig)
|
||||||
if err != nil {
|
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 {
|
select {
|
||||||
case err := <-attachErr:
|
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:
|
case err := <-execErr:
|
||||||
return job.Error(err)
|
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…
Add table
Add a link
Reference in a new issue