GoogleContainerTools/skaffold · error

getting imageID for %q: %w

Error message

getting imageID for %q: %w

What it means

Inside Verify, when a test case's image matches a build artifact by name, the verifier looks up its image ID with v.client.ImageID(ctx, b.Tag); this error wraps a failure of that lookup. It means the Docker client could not inspect the image for the built tag — daemon unreachable, or the tag resolving to nothing the daemon will report. It is distinct from the empty-ID case, which is handled separately by pulling the image.

Source

Thrown at pkg/skaffold/verify/docker/verify.go:147

		}
	}

	builds := []graph.Artifact{}
	const maxWorkers = math.MaxInt64
	s := semgroup.NewGroup(context.Background(), maxWorkers)

	for _, tc := range v.cfg {
		var na graph.Artifact
		foundArtifact := false
		testCase := tc
		useLocalImages := testCase.ExecutionMode.LocalExecutionMode.UseLocalImages

		for _, b := range allbuilds {
			if tc.Container.Image == b.ImageName {
				foundArtifact = true
				imageID, err := v.client.ImageID(ctx, b.Tag)
				if err != nil {
					return fmt.Errorf("getting imageID for %q: %w", b.Tag, err)
				}
				if imageID == "" {
					// not available in local docker daemon, needs to be pulled
					if err := v.client.Pull(ctx, out, b.Tag, v1.Platform{}); err != nil {
						return err
					}
				}
				na = graph.Artifact{
					ImageName: tc.Container.Image,
					Tag:       b.Tag,
				}
				builds = append(builds, graph.Artifact{
					ImageName: tc.Container.Image,
					Tag:       tc.Name,
				})
				break
			}
		}

View on GitHub (pinned to a1189de023)

Solutions

  1. Confirm daemon connectivity: `docker info` / `docker image inspect <tag>` with the same DOCKER_HOST the run uses.
  2. Build the image first (run `skaffold build`) so the tag exists before verify.
  3. Fix DOCKER_HOST/docker socket access for the user or CI container (mount /var/run/docker.sock, set DOCKER_HOST).
  4. Re-run `docker login` and check registry permissions if the error mentions auth/permission.

Example fix

# before: verify without docker running
$ skaffold verify
// after
$ docker info                          # ensure daemon reachable
$ docker image inspect $(skaffold build --tag ...) # confirm tag exists
$ skaffold verify
Defensive patterns

Strategy: retry

Validate before calling

tag := "<built-image-tag>"
out, err := exec.Command("docker", "image", "inspect", tag).CombinedOutput()
if err != nil {
    return fmt.Errorf("image %s not inspectable (build first?): %s", tag, out)
}

Try / catch

err := verifier.Verify(ctx, out, useLocalImages)
if err != nil && strings.Contains(err.Error(), "getting imageID") {
    if strings.Contains(err.Error(), "Cannot connect") || strings.Contains(err.Error(), "permission denied") {
        // daemon access problem: fix env, retry
        os.Setenv("DOCKER_HOST", "unix:///var/run/docker.sock")
        err = verifier.Verify(ctx, out, useLocalImages)
    }
}

Prevention

When it happens

Trigger: Running `skaffold verify` where a container's Image matches b.ImageName, and client.ImageID on the built tag errors — Docker daemon not running/accessible, Docker Desktop stopped, remote DOCKER_HOST refusing connections, or daemon API errors (permission denied on /images/... inspect).

Common situations: Forgetting to run `docker login`/start the daemon locally; CI job lacking docker socket mounting or DOCKER_HOST config; registry-auth/permission errors surfacing through the inspect call; partially built artifact with a malformed tag.

Related errors


AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05). Data as JSON: /api/errors/a5548705fce3e476. Report an issue: GitHub.