{"record":{"id":"44a2e27a4c83ea53","repo":"GoogleContainerTools/skaffold","slug":"docker-build-w","errorCode":null,"errorMessage":"docker build: %w","messagePattern":"docker build: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/docker/image.go","lineNumber":381,"sourceCode":"\n\tprogressOutput := progress.NewProgressOutput(out)\n\tbody := progress.NewProgressReader(buildCtx, progressOutput, 0, \"\", \"Sending build context to Docker daemon\")\n\n\tresp, err := l.apiClient.ImageBuild(ctx, body, client.ImageBuildOptions{\n\t\tTags:        []string{opts.Tag},\n\t\tDockerfile:  a.DockerfilePath,\n\t\tBuildArgs:   buildArgs,\n\t\tCacheFrom:   a.CacheFrom,\n\t\tAuthConfigs: authConfigs,\n\t\tTarget:      a.Target,\n\t\tForceRemove: l.forceRemove,\n\t\tNetworkMode: strings.ToLower(a.NetworkMode),\n\t\tExtraHosts:  a.AddHost,\n\t\tNoCache:     a.NoCache,\n\t\tPullParent:  a.PullParent,\n\t})\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"docker build: %w\", err)\n\t}\n\tdefer resp.Body.Close()\n\n\tvar imageID string\n\tauxCallback := func(msg jsonstream.Message) {\n\t\tif msg.Aux == nil {\n\t\t\treturn\n\t\t}\n\n\t\tvar result BuildResult\n\t\tif err := json.Unmarshal(*msg.Aux, &result); err != nil {\n\t\t\tlog.Entry(ctx).Debug(\"Unable to parse build output:\", err)\n\t\t\treturn\n\t\t}\n\t\timageID = result.ID\n\t}\n\n\tif err := streamDockerMessages(out, resp.Body, auxCallback); err != nil {","sourceCodeStart":363,"sourceCodeEnd":399,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/docker/image.go#L363-L399","documentation":"The actual POST to the Docker daemon's build endpoint returned an error before any stream output was produced — for example the daemon rejected the request, the network mode is invalid, or the daemon is unreachable. Build wraps it as `docker build: ...`.","triggerScenarios":"ImageBuild (the daemon HTTP call configured with NetworkMode, ExtraHosts, NoCache, PullParent) returns an error: daemon unavailable, invalid NetworkMode/AddHost values, unsupported build options for the daemon version, or HTTP transport failure.","commonSituations":"Docker daemon not running (docker desktop stopped); `networkMode` in skaffold.yaml names a non-existent network; `addHost` entries malformed; daemon version too old for requested options; DOCKER_HOST points to a dead remote.","solutions":["Verify the Docker daemon is running (`docker info`) and DOCKER_HOST is correct","Check networkMode/addHost values in skaffold.yaml for validity","Confirm the Docker daemon version supports the requested build options","Read the wrapped error for the exact daemon message"],"exampleFix":"// before\nnetworkMode: \"custom-net\"   # network doesn't exist\n// after\nnetworkMode: \"bridge\"       # or `docker network create custom-net`","handlingStrategy":"try-catch","validationCode":"if err := exec.Command(\"docker\", \"info\").Run(); err != nil {\n\treturn fmt.Errorf(\"docker daemon unreachable: %w\", err)\n}","typeGuard":null,"tryCatchPattern":"imageID, err := daemon.Build(...)\nif err != nil && strings.Contains(err.Error(), \"docker build:\") {\n\t// check daemon health and options validity before retrying\n\treturn fmt.Errorf(\"daemon rejected build: %w\", err)\n}","preventionTips":["Check `docker info` before long build workflows","Validate networkMode/addHost values against existing Docker networks","Keep the Docker daemon version compatible with requested build options"],"tags":["docker","daemon","http"],"backgroundTag":"docker-daemon-unreachable","analyzedSha":"a1189de023efc32d4b8e11f395acc678aa555011","analyzedAt":"2026-09-05T12:09:27.064Z","contentChangedAt":"2026-09-05T12:09:27.064Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}