diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-17 15:19:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-17 15:19:45 -0400 |
commit | bd8a0b08cdea5f15d6033b24038ba71aef1f8962 (patch) | |
tree | 581e283021a0edff9dfd89be73ddd7ccceb42b1d /libpod/image/prune.go | |
parent | ba289dcd79e3a2b5ec5dc02bd8adb84c93bef577 (diff) | |
parent | d8321363498c349647409dea1b6e15f8cf0ac17a (diff) | |
download | podman-bd8a0b08cdea5f15d6033b24038ba71aef1f8962.tar.gz podman-bd8a0b08cdea5f15d6033b24038ba71aef1f8962.tar.bz2 podman-bd8a0b08cdea5f15d6033b24038ba71aef1f8962.zip |
Merge pull request #5548 from kunalkushwaha/image-prune
image prune skips images with child images.
Diffstat (limited to 'libpod/image/prune.go')
-rw-r--r-- | libpod/image/prune.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/libpod/image/prune.go b/libpod/image/prune.go index 3afff22af..3b4ea74c4 100644 --- a/libpod/image/prune.go +++ b/libpod/image/prune.go @@ -57,7 +57,7 @@ func generatePruneFilterFuncs(filter, filterValue string) (ImageFilter, error) { } // GetPruneImages returns a slice of images that have no names/unused -func (ir *Runtime) GetPruneImages(all bool, filterFuncs []ImageFilter) ([]*Image, error) { +func (ir *Runtime) GetPruneImages(ctx context.Context, all bool, filterFuncs []ImageFilter) ([]*Image, error) { var ( pruneImages []*Image ) @@ -74,10 +74,6 @@ func (ir *Runtime) GetPruneImages(all bool, filterFuncs []ImageFilter) ([]*Image } } - if len(i.Names()) == 0 { - pruneImages = append(pruneImages, i) - continue - } if all { containers, err := i.Containers() if err != nil { @@ -85,8 +81,22 @@ func (ir *Runtime) GetPruneImages(all bool, filterFuncs []ImageFilter) ([]*Image } if len(containers) < 1 { pruneImages = append(pruneImages, i) + continue } } + + //skip the cache or intermediate images + intermediate, err := i.Intermediate(ctx) + if err != nil { + return nil, err + } + if intermediate { + continue + } + + if i.Dangling() { + pruneImages = append(pruneImages, i) + } } return pruneImages, nil } @@ -111,7 +121,7 @@ func (ir *Runtime) PruneImages(ctx context.Context, all bool, filter []string) ( filterFuncs = append(filterFuncs, generatedFunc) } - pruneImages, err := ir.GetPruneImages(all, filterFuncs) + pruneImages, err := ir.GetPruneImages(ctx, all, filterFuncs) if err != nil { return nil, errors.Wrap(err, "unable to get images to prune") } |