c8d/rmi: Handle explicit dangling name
This isn't something that user should do, but technically the dangling images exist in the image store and user can pass its name (`moby-dangling@digest`). Change it so rmi now recognizes that it's actually a dangling image and doesn't handle it like a regular tagged image. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
parent
25a813e924
commit
b8ba263099
2 changed files with 5 additions and 2 deletions
|
@ -64,7 +64,8 @@ func (i *ImageService) ImageDelete(ctx context.Context, imageRef string, force,
|
||||||
|
|
||||||
imgID := image.ID(img.Target.Digest)
|
imgID := image.ID(img.Target.Digest)
|
||||||
|
|
||||||
if isImageIDPrefix(imgID.String(), imageRef) {
|
explicitDanglingRef := strings.HasPrefix(imageRef, imageNameDanglingPrefix) && isDanglingImage(img)
|
||||||
|
if isImageIDPrefix(imgID.String(), imageRef) || explicitDanglingRef {
|
||||||
return i.deleteAll(ctx, img, force, prune)
|
return i.deleteAll(ctx, img, force, prune)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@ import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const imageNameDanglingPrefix = "moby-dangling@"
|
||||||
|
|
||||||
// softImageDelete deletes the image, making sure that there are other images
|
// softImageDelete deletes the image, making sure that there are other images
|
||||||
// that reference the content of the deleted image.
|
// that reference the content of the deleted image.
|
||||||
// If no other image exists, a dangling one is created.
|
// If no other image exists, a dangling one is created.
|
||||||
|
@ -74,7 +76,7 @@ func (i *ImageService) ensureDanglingImage(ctx context.Context, from containerdi
|
||||||
}
|
}
|
||||||
|
|
||||||
func danglingImageName(digest digest.Digest) string {
|
func danglingImageName(digest digest.Digest) string {
|
||||||
return "moby-dangling@" + digest.String()
|
return imageNameDanglingPrefix + digest.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func isDanglingImage(image containerdimages.Image) bool {
|
func isDanglingImage(image containerdimages.Image) bool {
|
||||||
|
|
Loading…
Reference in a new issue