From 6817733c2a7a1ad5d0d6f890e0e692cea454dd3c Mon Sep 17 00:00:00 2001 From: Brielle Broder Date: Wed, 27 Jun 2018 17:53:12 -0700 Subject: [PATCH] Fix checkpoint's exiting semantics. Previously, dockerd would always ask containerd to pass --leave-running to runc/runsc, ignoring the exit boolean value. Hence, even `docker checkpoint create --leave-running=false ...` would not stop the container. Signed-off-by: Brielle Broder Upstream-commit: db621eb7ee6a837f6879959ac56c67fa2b30ae1d Component: engine --- components/engine/libcontainerd/client_daemon.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/engine/libcontainerd/client_daemon.go b/components/engine/libcontainerd/client_daemon.go index 0706fa4daa..1bea770c29 100644 --- a/components/engine/libcontainerd/client_daemon.go +++ b/components/engine/libcontainerd/client_daemon.go @@ -561,7 +561,11 @@ func (c *client) CreateCheckpoint(ctx context.Context, containerID, checkpointDi return err } - img, err := p.(containerd.Task).Checkpoint(ctx) + opts := []containerd.CheckpointTaskOpts{} + if exit { + opts = append(opts, containerd.WithExit) + } + img, err := p.(containerd.Task).Checkpoint(ctx, opts...) if err != nil { return wrapError(err) }