diff --git a/daemon/containerd/image.go b/daemon/containerd/image.go index 8d0067360a..3af499644d 100644 --- a/daemon/containerd/image.go +++ b/daemon/containerd/image.go @@ -178,7 +178,7 @@ func (i *ImageService) GetImageManifest(ctx context.Context, refOrID string, opt platform = platforms.Only(*options.Platform) } - cs := i.client.ContentStore() + cs := i.content img, err := i.resolveImage(ctx, refOrID) if err != nil { @@ -237,7 +237,7 @@ func (i *ImageService) GetImageManifest(ctx context.Context, refOrID string, opt func (i *ImageService) size(ctx context.Context, desc ocispec.Descriptor, platform platforms.MatchComparer) (int64, error) { var size int64 - cs := i.client.ContentStore() + cs := i.content handler := containerdimages.LimitManifests(containerdimages.ChildrenHandler(cs), platform, 1) var wh containerdimages.HandlerFunc = func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) { @@ -360,7 +360,7 @@ func (i *ImageService) resolveImage(ctx context.Context, refOrID string) (contai // pointing to the same repository as the given reference. func (i *ImageService) getAllImagesWithRepository(ctx context.Context, ref reference.Named) ([]containerdimages.Image, error) { nameFilter := "^" + regexp.QuoteMeta(ref.Name()) + ":" + reference.TagRegexp.String() + "$" - return i.client.ImageService().List(ctx, "name~="+strconv.Quote(nameFilter)) + return i.images.List(ctx, "name~="+strconv.Quote(nameFilter)) } func imageFamiliarName(img containerdimages.Image) string { @@ -378,7 +378,7 @@ func imageFamiliarName(img containerdimages.Image) string { // targeting the specified digest. // If images have different values, an errdefs.Conflict error will be returned. func (i *ImageService) getImageLabelByDigest(ctx context.Context, target digest.Digest, labelKey string) (string, error) { - imgs, err := i.client.ImageService().List(ctx, "target.digest=="+target.String()+",labels."+labelKey) + imgs, err := i.images.List(ctx, "target.digest=="+target.String()+",labels."+labelKey) if err != nil { return "", errdefs.System(err) } diff --git a/daemon/containerd/image_builder.go b/daemon/containerd/image_builder.go index 5f3a40e478..3b52ac31d4 100644 --- a/daemon/containerd/image_builder.go +++ b/daemon/containerd/image_builder.go @@ -202,12 +202,12 @@ func newROLayerForImage(ctx context.Context, imgDesc *ocispec.Descriptor, i *Ima platMatcher = platforms.Only(*platform) } - confDesc, err := containerdimages.Config(ctx, i.client.ContentStore(), *imgDesc, platMatcher) + confDesc, err := containerdimages.Config(ctx, i.content, *imgDesc, platMatcher) if err != nil { return nil, err } - diffIDs, err := containerdimages.RootFS(ctx, i.client.ContentStore(), confDesc) + diffIDs, err := containerdimages.RootFS(ctx, i.content, confDesc) if err != nil { return nil, err } @@ -446,7 +446,7 @@ func (i *ImageService) CreateImage(ctx context.Context, config []byte, parent st if err != nil { return nil, err } - parentImageManifest, err := containerdimages.Manifest(ctx, i.client.ContentStore(), parentDesc, platforms.Default()) + parentImageManifest, err := containerdimages.Manifest(ctx, i.content, parentDesc, platforms.Default()) if err != nil { return nil, err } @@ -455,7 +455,7 @@ func (i *ImageService) CreateImage(ctx context.Context, config []byte, parent st parentDigest = parentDesc.Digest } - cs := i.client.ContentStore() + cs := i.content ra, err := cs.ReaderAt(ctx, ocispec.Descriptor{Digest: layerDigest}) if err != nil { @@ -504,7 +504,7 @@ func (i *ImageService) createImageOCI(ctx context.Context, imgToCreate imagespec } }() - manifestDesc, ccDesc, err := writeContentsForImage(ctx, i.snapshotter, i.client.ContentStore(), imgToCreate, layers, containerConfig) + manifestDesc, ccDesc, err := writeContentsForImage(ctx, i.snapshotter, i.content, imgToCreate, layers, containerConfig) if err != nil { return "", err } @@ -523,13 +523,13 @@ func (i *ImageService) createImageOCI(ctx context.Context, imgToCreate imagespec img.Labels[imageLabelClassicBuilderFromScratch] = "1" } - createdImage, err := i.client.ImageService().Update(ctx, img) + createdImage, err := i.images.Update(ctx, img) if err != nil { if !cerrdefs.IsNotFound(err) { return "", err } - if createdImage, err = i.client.ImageService().Create(ctx, img); err != nil { + if createdImage, err = i.images.Create(ctx, img); err != nil { return "", fmt.Errorf("failed to create new image: %w", err) } } diff --git a/daemon/containerd/image_commit.go b/daemon/containerd/image_commit.go index 568bf8dfa8..9e7cb526d3 100644 --- a/daemon/containerd/image_commit.go +++ b/daemon/containerd/image_commit.go @@ -38,7 +38,7 @@ with adaptations to match the Moby data model and services. // CommitImage creates a new image from a commit config. func (i *ImageService) CommitImage(ctx context.Context, cc backend.CommitConfig) (image.ID, error) { container := i.containers.Get(cc.ContainerID) - cs := i.client.ContentStore() + cs := i.content var parentManifest ocispec.Manifest var parentImage imagespec.DockerOCIImage diff --git a/daemon/containerd/image_delete.go b/daemon/containerd/image_delete.go index 8f4325776c..96d55ac632 100644 --- a/daemon/containerd/image_delete.go +++ b/daemon/containerd/image_delete.go @@ -375,7 +375,7 @@ func (i *ImageService) imageDeleteHelper(ctx context.Context, img images.Image, CreatedAt: time.Now(), Labels: img.Labels, } - if _, err = i.client.ImageService().Create(ctx, img); err != nil && !cerrdefs.IsAlreadyExists(err) { + if _, err = i.images.Create(ctx, img); err != nil && !cerrdefs.IsAlreadyExists(err) { return fmt.Errorf("failed to create dangling image: %w", err) } } diff --git a/daemon/containerd/image_history.go b/daemon/containerd/image_history.go index 39f96d99ba..e20710c3c6 100644 --- a/daemon/containerd/image_history.go +++ b/daemon/containerd/image_history.go @@ -84,13 +84,12 @@ func (i *ImageService) ImageHistory(ctx context.Context, name string) ([]*imaget return imgs } - is := i.client.ImageService() currentImg := img for _, h := range history { dgst := currentImg.Target.Digest.String() h.ID = dgst - imgs, err := is.List(ctx, "target.digest=="+dgst) + imgs, err := i.images.List(ctx, "target.digest=="+dgst) if err != nil { return nil, err } @@ -157,5 +156,5 @@ func (i *ImageService) getParentsByBuilderLabel(ctx context.Context, img contain return nil, nil } - return i.client.ImageService().List(ctx, "target.digest=="+dgst.String()) + return i.images.List(ctx, "target.digest=="+dgst.String()) } diff --git a/daemon/containerd/image_import.go b/daemon/containerd/image_import.go index e6af188e21..a5b408d5d4 100644 --- a/daemon/containerd/image_import.go +++ b/daemon/containerd/image_import.go @@ -66,7 +66,7 @@ func (i *ImageService) ImportImage(ctx context.Context, ref reference.Named, pla return "", errdefs.InvalidParameter(err) } - cs := i.client.ContentStore() + cs := i.content compressedDigest, uncompressedDigest, mt, err := saveArchive(ctx, cs, layerReader) if err != nil { @@ -299,11 +299,9 @@ func writeBlobAndReturnDigest(ctx context.Context, cs content.Store, mt string, // saveImage creates an image in the ImageService or updates it if it exists. func (i *ImageService) saveImage(ctx context.Context, img images.Image) error { - is := i.client.ImageService() - - if _, err := is.Update(ctx, img); err != nil { + if _, err := i.images.Update(ctx, img); err != nil { if cerrdefs.IsNotFound(err) { - if _, err := is.Create(ctx, img); err != nil { + if _, err := i.images.Create(ctx, img); err != nil { return errdefs.Unknown(err) } } else { diff --git a/daemon/containerd/image_list.go b/daemon/containerd/image_list.go index 8271a9cc8a..a3bd9e13ff 100644 --- a/daemon/containerd/image_list.go +++ b/daemon/containerd/image_list.go @@ -72,7 +72,7 @@ func (i *ImageService) Images(ctx context.Context, opts imagetypes.ListOptions) return nil, err } - imgs, err := i.client.ImageService().List(ctx) + imgs, err := i.images.List(ctx) if err != nil { return nil, err } @@ -103,7 +103,7 @@ func (i *ImageService) Images(ctx context.Context, opts imagetypes.ListOptions) layers = make(map[digest.Digest]int) } - contentStore := i.client.ContentStore() + contentStore := i.content uniqueImages := map[digest.Digest]images.Image{} tagsByDigest := map[digest.Digest][]string{} intermediateImages := map[digest.Digest]struct{}{} @@ -426,7 +426,7 @@ func (i *ImageService) setupFilters(ctx context.Context, imageFilters filters.Ar return nil, err } - labelFn, err := setupLabelFilter(i.client.ContentStore(), imageFilters) + labelFn, err := setupLabelFilter(i.content, imageFilters) if err != nil { return nil, err } diff --git a/daemon/containerd/image_pull.go b/daemon/containerd/image_pull.go index 26b27263cc..fbb71b4766 100644 --- a/daemon/containerd/image_pull.go +++ b/daemon/containerd/image_pull.go @@ -90,7 +90,7 @@ func (i *ImageService) pullTag(ctx context.Context, ref reference.Named, platfor }) opts = append(opts, containerd.WithImageHandler(h)) - pp := pullProgress{store: i.client.ContentStore(), showExists: true} + pp := pullProgress{store: i.content, showExists: true} finishProgress := jobs.showProgress(ctx, out, pp) var outNewImg *containerd.Image @@ -140,7 +140,7 @@ func (i *ImageService) pullTag(ctx context.Context, ref reference.Named, platfor sentPullingFrom = true } - available, _, _, missing, err := images.Check(ctx, i.client.ContentStore(), desc, p) + available, _, _, missing, err := images.Check(ctx, i.content, desc, p) if err != nil { return nil, err } @@ -187,7 +187,7 @@ func (i *ImageService) pullTag(ctx context.Context, ref reference.Named, platfor logger.Info("image pulled") // The pull succeeded, so try to remove any dangling image we have for this target - err = i.client.ImageService().Delete(compatcontext.WithoutCancel(ctx), danglingImageName(img.Target().Digest)) + err = i.images.Delete(compatcontext.WithoutCancel(ctx), danglingImageName(img.Target().Digest)) if err != nil && !cerrdefs.IsNotFound(err) { // Image pull succeeded, but cleaning up the dangling image failed. Ignore the // error to not mark the pull as failed. diff --git a/daemon/containerd/image_push.go b/daemon/containerd/image_push.go index 06f47bfd67..b8bb023444 100644 --- a/daemon/containerd/image_push.go +++ b/daemon/containerd/image_push.go @@ -91,7 +91,7 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, m } }() - img, err := i.client.ImageService().Get(ctx, targetRef.String()) + img, err := i.images.Get(ctx, targetRef.String()) if err != nil { if cerrdefs.IsNotFound(err) { return errdefs.NotFound(fmt.Errorf("tag does not exist: %s", reference.FamiliarString(targetRef))) @@ -100,7 +100,7 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, m } target := img.Target - store := i.client.ContentStore() + store := i.content resolver, tracker := i.newResolverFromAuthConfig(ctx, authConfig, targetRef) pp := pushProgress{Tracker: tracker} diff --git a/daemon/containerd/image_snapshot.go b/daemon/containerd/image_snapshot.go index 6c7104dfa9..dff127d69a 100644 --- a/daemon/containerd/image_snapshot.go +++ b/daemon/containerd/image_snapshot.go @@ -26,7 +26,7 @@ func (i *ImageService) PrepareSnapshot(ctx context.Context, id string, parentIma return err } - cs := i.client.ContentStore() + cs := i.content matcher := matchAllWithPreference(platforms.Default()) if platform != nil { diff --git a/daemon/containerd/image_tag.go b/daemon/containerd/image_tag.go index 9b8ff10daa..54de8efe3d 100644 --- a/daemon/containerd/image_tag.go +++ b/daemon/containerd/image_tag.go @@ -28,8 +28,7 @@ func (i *ImageService) TagImage(ctx context.Context, imageID image.ID, newTag re Labels: targetImage.Labels, } - is := i.client.ImageService() - _, err = is.Create(ctx, newImg) + _, err = i.images.Create(ctx, newImg) if err != nil { if !cerrdefs.IsAlreadyExists(err) { return errdefs.System(errors.Wrapf(err, "failed to create image with name %s and target %s", newImg.Name, newImg.Target.Digest.String())) @@ -54,7 +53,7 @@ func (i *ImageService) TagImage(ctx context.Context, imageID image.ID, newTag re return errors.Wrapf(err, "failed to delete previous image %s", replacedImg.Name) } - if _, err = is.Create(compatcontext.WithoutCancel(ctx), newImg); err != nil { + if _, err = i.images.Create(compatcontext.WithoutCancel(ctx), newImg); err != nil { return errdefs.System(errors.Wrapf(err, "failed to create an image %s with target %s after deleting the existing one", newImg.Name, imageID.String())) } @@ -69,7 +68,7 @@ func (i *ImageService) TagImage(ctx context.Context, imageID image.ID, newTag re defer i.LogImageEvent(imageID.String(), reference.FamiliarString(newTag), events.ActionTag) // Delete the source dangling image, as it's no longer dangling. - if err := is.Delete(compatcontext.WithoutCancel(ctx), danglingImageName(targetImage.Target.Digest)); err != nil { + if err := i.images.Delete(compatcontext.WithoutCancel(ctx), danglingImageName(targetImage.Target.Digest)); err != nil { logger.WithError(err).Warn("unexpected error when deleting dangling image") }