Prune named but untagged images if danglingOnly=true
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
This commit is contained in:
parent
a3dff7c3db
commit
044fa10309
|
@ -135,18 +135,22 @@ func (daemon *Daemon) ImagesPrune(pruneFilters filters.Args) (*types.ImagesPrune
|
||||||
deletedImages := []types.ImageDelete{}
|
deletedImages := []types.ImageDelete{}
|
||||||
refs := daemon.referenceStore.References(dgst)
|
refs := daemon.referenceStore.References(dgst)
|
||||||
if len(refs) > 0 {
|
if len(refs) > 0 {
|
||||||
if danglingOnly {
|
shouldDelete := !danglingOnly
|
||||||
// Not a dangling image
|
if !shouldDelete {
|
||||||
continue
|
hasTag := false
|
||||||
|
for _, ref := range refs {
|
||||||
|
if _, ok := ref.(reference.NamedTagged); ok {
|
||||||
|
hasTag = true
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nrRefs := len(refs)
|
// Only delete if it's untagged (i.e. repo:<none>)
|
||||||
for _, ref := range refs {
|
shouldDelete = !hasTag
|
||||||
// If nrRefs == 1, we have an image marked as myreponame:<none>
|
|
||||||
// i.e. the tag content was changed
|
|
||||||
if _, ok := ref.(reference.Canonical); ok && nrRefs > 1 {
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if shouldDelete {
|
||||||
|
for _, ref := range refs {
|
||||||
imgDel, err := daemon.ImageDelete(ref.String(), false, true)
|
imgDel, err := daemon.ImageDelete(ref.String(), false, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Warnf("could not delete reference %s: %v", ref.String(), err)
|
logrus.Warnf("could not delete reference %s: %v", ref.String(), err)
|
||||||
|
@ -154,6 +158,7 @@ func (daemon *Daemon) ImagesPrune(pruneFilters filters.Args) (*types.ImagesPrune
|
||||||
}
|
}
|
||||||
deletedImages = append(deletedImages, imgDel...)
|
deletedImages = append(deletedImages, imgDel...)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
imgDel, err := daemon.ImageDelete(hex, false, true)
|
imgDel, err := daemon.ImageDelete(hex, false, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue