|
@@ -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
|
|
|
}
|
|
|
|