"could not find a matching digest value from the set of locally pulled digests" error when building locally

Open
#1,981 0 comments 0 reactions 1 assignee View on GitHub

@lbussell is already working on this.

Since Feb 23, 2026.

Assessment

This issue has not been assessed yet.

Description

area-infrastructure

Repro:

Running on a Window 11 desktop in linux container mode.
Pull dotnet-docker repo
$ .\build-and-test.ps1 -Version 11.* -OS alpine3.23 -Mode Build

Results:

...
PULLING LATEST BASE IMAGES
--------------------------
-- EXECUTING: docker pull --platform linux/amd64 amd64/alpine:3.23
3.23: Pulling from amd64/alpine
Digest: sha256:da143300ea1b5cd2cf20cccafd3b4135047d232645974d28efa6a2314c9b1a11
Status: Image is up to date for amd64/alpine:3.23
docker.io/amd64/alpine:3.23
-- EXECUTION ELAPSED TIME: 00:00:00.7167725
-- EXECUTING: docker inspect docker.io/amd64/alpine:3.23 -f "{{ index .RepoDigests }}"
[amd64/alpine@sha256:da143300ea1b5cd2cf20cccafd3b4135047d232645974d28efa6a2314c9b1a11]
-- EXECUTION ELAPSED TIME: 00:00:00.0712058
Sending HTTP request: https://registry-1.docker.io/v2/amd64/alpine/manifests/3.23
Sending HTTP request: https://auth.docker.io/token?service=registry.docker.io&scope=repository:amd64/alpine:pull
Sending HTTP request: https://registry-1.docker.io/v2/amd64/alpine/manifests/3.23
Unhandled exception: System.InvalidOperationException: Found published digest 'sha256:da143300ea1b5cd2cf20cccafd3b4135047d232645974d28efa6a2314c9b1a11' for tag 'docker.io/amd64/alpine:3.23' but could not find a matching digest value from the set of locally pulled digests for this tag: amd64/alpine@sha256:da143300ea1b5cd2cf20cccafd3b4135047d232645974d28efa6a2314c9b1a11. This most likely means that this tag has been updated since it was last pulled.
   at Microsoft.DotNet.ImageBuilder.IManifestService.GetLocalImageDigestAsync(ImageName image, Boolean isDryRun) in /image-builder/ImageBuilder/IManifestService.cs:line 61
   at Microsoft.DotNet.ImageBuilder.LockHelper.<>c__DisplayClass3_0`2.<<DoubleCheckedLockLookupAsync>b__0>d.MoveNext() in /image-builder/ImageBuilder/LockHelper.cs:line 80
--- End of stack trace from previous location ---
   at Microsoft.DotNet.ImageBuilder.LockHelper.LockAsync(SemaphoreSlim semaphore, Func`1 func) in /image-builder/ImageBuilder/LockHelper.cs:line 99
   at Microsoft.DotNet.ImageBuilder.LockHelper.DoubleCheckedLockLookupAsync[TKey,TValue](SemaphoreSlim semaphore, IDictionary`2 dictionary, TKey key, Func`1 getValue, Func`2 addToDictionary) in /image-builder/ImageBuilder/LockHelper.cs:line 76
   at Microsoft.DotNet.ImageBuilder.Commands.BuildCommand.<PullBaseImagesAsync>b__39_2(String fromImage, CancellationToken cancellationToken) in /image-builder/ImageBuilder/Commands/BuildCommand.cs:line 695
   at System.Threading.Tasks.Parallel.<>c__53`1.<<ForEachAsync>b__53_0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.DotNet.ImageBuilder.Commands.BuildCommand.PullBaseImagesAsync() in /image-builder/ImageBuilder/Commands/BuildCommand.cs:line 689
   at Microsoft.DotNet.ImageBuilder.RegistryCredentialsProviderExtensions.ExecuteWithCredentialsAsync(IRegistryCredentialsProvider credsProvider, Boolean isDryRun, Func`1 action, IRegistryCredentialsHost credentialsOptions, String registryName) in /image-builder/ImageBuilder/RegistryCredentialsProviderExtensions.cs:line 23
   at Microsoft.DotNet.ImageBuilder.Commands.BuildCommand.ExecuteWithDockerCredentialsAsync(Func`1 action) in /image-builder/ImageBuilder/Commands/BuildCommand.cs:line 127
   at Microsoft.DotNet.ImageBuilder.Commands.BuildCommand.ExecuteAsync() in /image-builder/ImageBuilder/Commands/BuildCommand.cs:line 108
   at System.CommandLine.Invocation.CommandHandler.GetResultCodeAsync(Object value, InvocationContext context)
   at System.CommandLine.Invocation.ModelBindingCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseParseErrorReporting>b__21_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseMiddleware>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass25_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass23_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__22_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseParseDirective>b__20_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseDebugDirective>b__11_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__10_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass14_0.<<UseExceptionHandler>b__0>d.MoveNext()
Executing: 'docker container rm -f ImageBuilder-20260223103730'
ImageBuilder-20260223103730
Skipping samples builds since no input paths contained samples

@mthalman suggested this may be caused by the Docker Use containerd for pulling and storing images setting. I haven't been able to validate this.

Dominant language
C#
Stars
182
Forks
67
Avg merge
1d 20h
Merged PRs (30d)
15

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/docker-tools

All issues in dotnet/docker-tools

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.