mirror of https://github.com/k3s-io/k3s
return success if ImageNotFound in RemoveImage()
Signed-off-by: Crazykev <crazykev@zju.edu.cn>pull/6/head
parent
4b2ab4e116
commit
ebb5c3d13d
|
@ -94,15 +94,20 @@ func (ds *dockerService) RemoveImage(image *runtimeapi.ImageSpec) error {
|
|||
imageInspect, err := ds.client.InspectImageByID(image.Image)
|
||||
if err == nil && imageInspect != nil && len(imageInspect.RepoTags) > 1 {
|
||||
for _, tag := range imageInspect.RepoTags {
|
||||
if _, err := ds.client.RemoveImage(tag, dockertypes.ImageRemoveOptions{PruneChildren: true}); err != nil {
|
||||
if _, err := ds.client.RemoveImage(tag, dockertypes.ImageRemoveOptions{PruneChildren: true}); err != nil && !libdocker.IsImageNotFoundError(err) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
} else if err != nil && libdocker.IsImageNotFoundError(err) {
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err = ds.client.RemoveImage(image.Image, dockertypes.ImageRemoveOptions{PruneChildren: true})
|
||||
return err
|
||||
if err != nil && !libdocker.IsImageNotFoundError(err) {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// getImageRef returns the image digest if exists, or else returns the image ID.
|
||||
|
|
|
@ -129,3 +129,9 @@ func matchImageIDOnly(inspected dockertypes.ImageInspect, image string) bool {
|
|||
glog.V(4).Infof("The reference %s does not directly refer to the given image's ID (%q)", image, inspected.ID)
|
||||
return false
|
||||
}
|
||||
|
||||
// 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:")
|
||||
}
|
||||
|
|
|
@ -382,6 +382,9 @@ func (d *kubeDockerClient) RemoveImage(image string, opts dockertypes.ImageRemov
|
|||
if ctxErr := contextError(ctx); ctxErr != nil {
|
||||
return nil, ctxErr
|
||||
}
|
||||
if isImageNotFoundError(err) {
|
||||
return nil, ImageNotFoundError{ID: image}
|
||||
}
|
||||
return resp, err
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue