|
@@ -2123,21 +2123,24 @@ func (cli *DockerCli) CmdRun(args ...string) error {
|
|
// Detached mode
|
|
// Detached mode
|
|
<-wait
|
|
<-wait
|
|
} else {
|
|
} else {
|
|
- running, status, err := getExitCode(cli, runResult.ID)
|
|
|
|
- if err != nil {
|
|
|
|
- return err
|
|
|
|
- }
|
|
|
|
|
|
+ var status int
|
|
|
|
+
|
|
if autoRemove {
|
|
if autoRemove {
|
|
- if running {
|
|
|
|
- return fmt.Errorf("Impossible to auto-remove a detached container")
|
|
|
|
- }
|
|
|
|
- // Wait for the process to
|
|
|
|
if _, _, err := cli.call("POST", "/containers/"+runResult.ID+"/wait", nil); err != nil {
|
|
if _, _, err := cli.call("POST", "/containers/"+runResult.ID+"/wait", nil); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
+ _, status, err = getExitCode(cli, runResult.ID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
if _, _, err := cli.call("DELETE", "/containers/"+runResult.ID, nil); err != nil {
|
|
if _, _, err := cli.call("DELETE", "/containers/"+runResult.ID, nil); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ _, status, err = getExitCode(cli, runResult.ID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if status != 0 {
|
|
if status != 0 {
|
|
return &utils.StatusError{Status: status}
|
|
return &utils.StatusError{Status: status}
|