{"record":{"id":"f3a2033dc7783e0a","repo":"juanfont/headscale","slug":"running-pre-built-tailscale-container-q-w","errorCode":null,"errorMessage":"running pre-built tailscale container %q: %w","messagePattern":"running pre-built tailscale container %q: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"integration/tsic/tsic.go","lineNumber":461,"sourceCode":"\n\t\t\t// Parse image into repository and tag\n\t\t\trepo, tag, ok := strings.Cut(prebuiltImage, \":\")\n\t\t\tif !ok {\n\t\t\t\treturn nil, errInvalidTailscaleImageFormat\n\t\t\t}\n\n\t\t\ttailscaleOptions.Repository = repo\n\t\t\ttailscaleOptions.Tag = tag\n\n\t\t\tcontainer, err = pool.RunWithOptions(\n\t\t\t\ttailscaleOptions,\n\t\t\t\tdockertestutil.DockerRestartPolicy,\n\t\t\t\tdockertestutil.DockerAllowLocalIPv6,\n\t\t\t\tdockertestutil.DockerAllowNetworkAdministration,\n\t\t\t\tdockertestutil.DockerMemoryLimit,\n\t\t\t)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"running pre-built tailscale container %q: %w\", prebuiltImage, err)\n\t\t\t}\n\t\t} else if util.IsCI() && !hasBuildTags {\n\t\t\t// In CI, we require a pre-built image unless custom build tags are needed\n\t\t\treturn nil, errTailscaleImageRequiredInCI\n\t\t} else {\n\t\t\tbuildOptions := &dockertest.BuildOptions{\n\t\t\t\tDockerfile: \"Dockerfile.tailscale-HEAD\",\n\t\t\t\tContextDir: dockerContextPath,\n\t\t\t\tBuildArgs:  []docker.BuildArg{},\n\t\t\t}\n\n\t\t\tbuildTags := strings.Join(tsic.buildConfig.tags, \",\")\n\t\t\tif len(buildTags) > 0 {\n\t\t\t\tbuildOptions.BuildArgs = append(\n\t\t\t\t\tbuildOptions.BuildArgs,\n\t\t\t\t\tdocker.BuildArg{\n\t\t\t\t\t\tName:  \"BUILD_TAGS\",\n\t\t\t\t\t\tValue: buildTags,","sourceCodeStart":443,"sourceCodeEnd":479,"githubUrl":"https://github.com/juanfont/headscale/blob/565fd254d06c4c7f9a8cad1714a43445c79ba420/integration/tsic/tsic.go#L443-L479","documentation":"dockertest's `RunWithOptions` failed while starting a container from a pre-built tailscale image (`HEADSCALE_INTEGRATION_TAILSCALE_IMAGE`, format repository:tag). The error names the image and wraps dockertest's failure: image not found locally/remotely, tag mismatch, name conflict, or Docker daemon issues.","triggerScenarios":"Running a client with a prebuilt image configured when the image does not exist locally and cannot be pulled, a stale container with the same generated name exists, or the Docker daemon is out of resources.","commonSituations":"HEADSCALE_INTEGRATION_TAILSCALE_IMAGE points at an untagged/unpushed image; local cache pruned; leftover container from a crashed run; CI registry auth missing for a private image.","solutions":["Verify the image exists: `docker image inspect <repo:tag>`; pull or rebuild it if missing.","Remove conflicting containers from prior runs (`docker rm -f` or the repo cleanup command).","In CI, confirm the image is built/pushed before the job step that runs integration tests.","Check Docker daemon health and disk space."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Pre-flight the prebuilt image before tests.\nif img := os.Getenv(\"HEADSCALE_INTEGRATION_TAILSCALE_IMAGE\"); img != \"\" {\n    if err := exec.Command(\"docker\", \"image\", \"inspect\", img).Run(); err != nil {\n        log.Fatalf(\"prebuilt image %s missing; pull or build it first\", img)\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set HEADSCALE_INTEGRATION_TAILSCALE_IMAGE to a known-good repo:tag in CI.","Prune stale containers between runs.","Validate the env var format repository:tag at job start."],"tags":["docker","integration","tailscale","image-management"],"backgroundTag":null,"analyzedSha":"565fd254d06c4c7f9a8cad1714a43445c79ba420","analyzedAt":"2026-08-15T13:12:30.133Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}