|
@@ -1471,6 +1471,17 @@ func (cli *DockerCli) CmdRun(args ...string) error {
|
|
|
v.Set("stderr", "1")
|
|
|
}
|
|
|
|
|
|
+ signals := make(chan os.Signal, 1)
|
|
|
+ signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
|
|
|
+ go func() {
|
|
|
+ for sig := range signals {
|
|
|
+ fmt.Printf("\nReceived signal: %s; cleaning up\n", sig)
|
|
|
+ if err := cli.CmdStop("-t", "4", runResult.ID); err != nil {
|
|
|
+ fmt.Printf("failed to stop container: %v", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
if err := cli.hijack("POST", "/containers/"+runResult.ID+"/attach?"+v.Encode(), config.Tty, cli.in, cli.out); err != nil {
|
|
|
utils.Debugf("Error hijack: %s", err)
|
|
|
return err
|