diff --git a/pkg/kubelet/dockershim/docker_image.go b/pkg/kubelet/dockershim/docker_image.go index 850f109e649..92cc2285bba 100644 --- a/pkg/kubelet/dockershim/docker_image.go +++ b/pkg/kubelet/dockershim/docker_image.go @@ -101,8 +101,11 @@ func (ds *dockerService) RemoveImage(image *runtimeapi.ImageSpec) error { } } return nil - } else if err != nil && libdocker.IsImageNotFoundError(err) { - return nil + } + // dockerclient.InspectImageByID doesn't work with digest and repoTags, + // it is safe to continue removing it since there is another check below. + if err != nil && !libdocker.IsImageNotFoundError(err) { + return err } _, err = ds.client.RemoveImage(image.Image, dockertypes.ImageRemoveOptions{PruneChildren: true}) diff --git a/pkg/kubelet/dockershim/libdocker/helpers.go b/pkg/kubelet/dockershim/libdocker/helpers.go index 1dc778ef7b4..5dd59557e9f 100644 --- a/pkg/kubelet/dockershim/libdocker/helpers.go +++ b/pkg/kubelet/dockershim/libdocker/helpers.go @@ -133,5 +133,8 @@ func matchImageIDOnly(inspected dockertypes.ImageInspect, image string) bool { // isImageNotFoundError returns whether the err is caused by image not found in docker // TODO: Use native error tester once ImageNotFoundError is supported in docker-engine client(eg. ImageRemove()) func isImageNotFoundError(err error) bool { - return strings.Contains(err.Error(), "No such image:") + if err != nil { + return strings.Contains(err.Error(), "No such image:") + } + return false }