From b9c1d6c7c8d7755a1966f9386c02d73b3b5f3979 Mon Sep 17 00:00:00 2001 From: Xianglin Gao Date: Sat, 1 Apr 2017 15:51:01 +0800 Subject: [PATCH] Remove all containers in the sandbox Signed-off-by: Xianglin Gao --- pkg/kubelet/dockershim/docker_sandbox.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/dockershim/docker_sandbox.go b/pkg/kubelet/dockershim/docker_sandbox.go index d83d68f3715..47fd1c4fcdb 100644 --- a/pkg/kubelet/dockershim/docker_sandbox.go +++ b/pkg/kubelet/dockershim/docker_sandbox.go @@ -216,14 +216,34 @@ func (ds *dockerService) StopPodSandbox(podSandboxID string) error { // sandbox, they should be forcibly removed. func (ds *dockerService) RemovePodSandbox(podSandboxID string) error { var errs []error + opts := dockertypes.ContainerListOptions{All: true} + + opts.Filter = dockerfilters.NewArgs() + f := newDockerFilter(&opts.Filter) + f.AddLabel(sandboxIDLabelKey, podSandboxID) + + containers, err := ds.client.ListContainers(opts) + if err != nil { + errs = append(errs, err) + } + + // Remove all containers in the sandbox. + for i := range containers { + if err := ds.RemoveContainer(containers[i].ID); err != nil && !dockertools.IsContainerNotFoundError(err) { + errs = append(errs, err) + } + } + + // Remove the sandbox container. if err := ds.client.RemoveContainer(podSandboxID, dockertypes.ContainerRemoveOptions{RemoveVolumes: true}); err != nil && !dockertools.IsContainerNotFoundError(err) { errs = append(errs, err) } + + // Remove the checkpoint of the sandbox. if err := ds.checkpointHandler.RemoveCheckpoint(podSandboxID); err != nil { errs = append(errs, err) } return utilerrors.NewAggregate(errs) - // TODO: remove all containers in the sandbox. } // getIPFromPlugin interrogates the network plugin for an IP.