package images // import "github.com/docker/docker/daemon/images" import ( "context" imagetypes "github.com/docker/docker/api/types/image" "github.com/docker/docker/builder" "github.com/docker/docker/image/cache" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) // MakeImageCache creates a stateful image cache. func (i *ImageService) MakeImageCache(ctx context.Context, sourceRefs []string) (builder.ImageCache, error) { if len(sourceRefs) == 0 { return cache.NewLocal(i.imageStore), nil } cache := cache.New(i.imageStore) for _, ref := range sourceRefs { img, err := i.GetImage(ctx, ref, imagetypes.GetImageOpts{}) if err != nil { if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { return nil, err } logrus.Warnf("Could not look up %s for cache resolution, skipping: %+v", ref, err) continue } cache.Populate(img) } return cache, nil }