Revert "Disable automatic killing of containers when docker stop fails"

This reverts commit 8b5cf51d600dc4f3611cf063c52cf3448e7b01e5.

Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
Upstream-commit: d503714285143013d9fa6932ee5775fd155d26d2
Component: engine
This commit is contained in:
Michael Crosby
2014-03-24 12:03:56 +00:00
parent a7b2642223
commit aa948163e7
4 changed files with 18 additions and 10 deletions

View File

@ -498,8 +498,8 @@ func (cli *DockerCli) CmdInfo(args ...string) error {
}
func (cli *DockerCli) CmdStop(args ...string) error {
cmd := cli.Subcmd("stop", "[OPTIONS] CONTAINER [CONTAINER...]", "Stop a running container (Send SIGTERM)")
nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Number of seconds to wait for the container to stop.")
cmd := cli.Subcmd("stop", "[OPTIONS] CONTAINER [CONTAINER...]", "Stop a running container (Send SIGTERM, and then SIGKILL after grace period)")
nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Number of seconds to wait for the container to stop before killing it.")
if err := cmd.Parse(args); err != nil {
return nil
}
@ -526,7 +526,7 @@ func (cli *DockerCli) CmdStop(args ...string) error {
func (cli *DockerCli) CmdRestart(args ...string) error {
cmd := cli.Subcmd("restart", "[OPTIONS] CONTAINER [CONTAINER...]", "Restart a running container")
nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Number of seconds to wait for the container to stop. Default=10")
nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Number of seconds to try to stop for before killing the container. Once killed it will then be restarted. Default=10")
if err := cmd.Parse(args); err != nil {
return nil
}

View File

@ -432,7 +432,7 @@ Stop a container
HTTP/1.1 204 OK
:query t: number of seconds to wait for the container to stop
:query t: number of seconds to wait before killing the container
:statuscode 204: no error
:statuscode 404: no such container
:statuscode 500: server error
@ -457,7 +457,7 @@ Restart a container
HTTP/1.1 204 OK
:query t: number of seconds to wait for the container to stop
:query t: number of seconds to wait before killing the container
:statuscode 204: no error
:statuscode 404: no such container
:statuscode 500: server error

View File

@ -1360,11 +1360,11 @@ This example shows 5 containers that might be set up to test a web application c
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop a running container (Send SIGTERM)
Stop a running container (Send SIGTERM, and then SIGKILL after grace period)
-t, --time=10: Number of seconds to wait for the container to stop.
-t, --time=10: Number of seconds to wait for the container to stop before killing it.
The main process inside the container will receive SIGTERM.
The main process inside the container will receive SIGTERM, and after a grace period, SIGKILL
.. _cli_tag:

View File

@ -903,12 +903,20 @@ func (container *Container) Stop(seconds int) error {
// 1. Send a SIGTERM
if err := container.KillSig(15); err != nil {
return err
utils.Debugf("Error sending kill SIGTERM: %s", err)
log.Print("Failed to send SIGTERM to the process, force killing")
if err := container.KillSig(9); err != nil {
return err
}
}
// 2. Wait for the process to exit on its own
if err := container.WaitTimeout(time.Duration(seconds) * time.Second); err != nil {
return err
log.Printf("Container %v failed to exit within %d seconds of SIGTERM - using the force", container.ID, seconds)
// 3. If it doesn't, then send SIGKILL
if err := container.Kill(); err != nil {
return err
}
}
return nil
}