diff --git a/daemon/daemon.go b/daemon/daemon.go index b1e3f88329..be4c12d4e9 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -48,6 +48,7 @@ import ( "github.com/docker/docker/dockerversion" "github.com/docker/docker/errdefs" "github.com/docker/docker/image" + "github.com/docker/docker/internal/compatcontext" "github.com/docker/docker/layer" libcontainerdtypes "github.com/docker/docker/libcontainerd/types" "github.com/docker/docker/libnetwork" @@ -1212,14 +1213,16 @@ func (daemon *Daemon) waitForStartupDone() { } func (daemon *Daemon) shutdownContainer(c *container.Container) error { + ctx := compatcontext.WithoutCancel(context.TODO()) + // If container failed to exit in stopTimeout seconds of SIGTERM, then using the force - if err := daemon.containerStop(context.TODO(), c, containertypes.StopOptions{}); err != nil { + if err := daemon.containerStop(ctx, c, containertypes.StopOptions{}); err != nil { return fmt.Errorf("Failed to stop container %s with error: %v", c.ID, err) } // Wait without timeout for the container to exit. // Ignore the result. - <-c.Wait(context.Background(), container.WaitConditionNotRunning) + <-c.Wait(ctx, container.WaitConditionNotRunning) return nil }