diff --git a/pkg/kubelet/dockershim/docker_container.go b/pkg/kubelet/dockershim/docker_container.go index 5b51999e3b..b99a7e4b8e 100644 --- a/pkg/kubelet/dockershim/docker_container.go +++ b/pkg/kubelet/dockershim/docker_container.go @@ -287,7 +287,6 @@ func (ds *dockerService) StopContainer(containerID string, timeout int64) error } // RemoveContainer removes the container. -// TODO: If a container is still running, should we forcibly remove it? func (ds *dockerService) RemoveContainer(containerID string) error { // Ideally, log lifecycle should be independent of container lifecycle. // However, docker will remove container log after container is removed, @@ -296,7 +295,7 @@ func (ds *dockerService) RemoveContainer(containerID string) error { if err != nil { return err } - err = ds.client.RemoveContainer(containerID, dockertypes.ContainerRemoveOptions{RemoveVolumes: true}) + err = ds.client.RemoveContainer(containerID, dockertypes.ContainerRemoveOptions{RemoveVolumes: true, Force: true}) if err != nil { return fmt.Errorf("failed to remove container %q: %v", containerID, err) } diff --git a/pkg/kubelet/dockershim/docker_sandbox.go b/pkg/kubelet/dockershim/docker_sandbox.go index b9cf1226b3..1f5bf31379 100644 --- a/pkg/kubelet/dockershim/docker_sandbox.go +++ b/pkg/kubelet/dockershim/docker_sandbox.go @@ -237,7 +237,7 @@ func (ds *dockerService) RemovePodSandbox(podSandboxID string) error { } // Remove the sandbox container. - if err := ds.client.RemoveContainer(podSandboxID, dockertypes.ContainerRemoveOptions{RemoveVolumes: true}); err != nil && !libdocker.IsContainerNotFoundError(err) { + if err := ds.client.RemoveContainer(podSandboxID, dockertypes.ContainerRemoveOptions{RemoveVolumes: true, Force: true}); err != nil && !libdocker.IsContainerNotFoundError(err) { errs = append(errs, err) }