{"record":{"id":"4c07300fc788816d","repo":"GoogleContainerTools/skaffold","slug":"init-docker-network-invalid-mode","errorCode":"INIT_DOCKER_NETWORK_INVALID_MODE","errorMessage":"extracting container name from a non valid container network mode '%s'","messagePattern":"extracting container name from a non valid container network mode '(.+?)'","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/schema/validation/validation.go","lineNumber":330,"sourceCode":"\t\tmaybeID := strings.SplitN(mode, \":\", 2)[1]\n\t\tid, err := util.ExpandEnvTemplate(maybeID, map[string]string{})\n\t\tif err != nil {\n\t\t\treturn \"\", sErrors.NewError(err,\n\t\t\t\t&proto.ActionableErr{\n\t\t\t\t\tMessage: fmt.Sprintf(\"unable to parse container name %s: %s\", mode, err),\n\t\t\t\t\tErrCode: proto.StatusCode_INIT_DOCKER_NETWORK_PARSE_ERR,\n\t\t\t\t\tSuggestions: []*proto.Suggestion{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tSuggestionCode: proto.SuggestionCode_FIX_DOCKER_NETWORK_CONTAINER_NAME,\n\t\t\t\t\t\t\tAction:         fmt.Sprintf(\"Check the content of the environment variable: %s\", maybeID),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t}\n\t\treturn id, nil\n\t}\n\terrMsg := fmt.Sprintf(\"extracting container name from a non valid container network mode '%s'\", mode)\n\treturn \"\", sErrors.NewError(errors.New(errMsg),\n\t\t&proto.ActionableErr{\n\t\t\tMessage: errMsg,\n\t\t\tErrCode: proto.StatusCode_INIT_DOCKER_NETWORK_INVALID_MODE,\n\t\t\tSuggestions: []*proto.Suggestion{\n\t\t\t\t{\n\t\t\t\t\tSuggestionCode: proto.SuggestionCode_FIX_DOCKER_NETWORK_MODE_WHEN_EXTRACTING_CONTAINER_NAME,\n\t\t\t\t\tAction:         \"Only container mode allowed when calling 'extractContainerNameFromNetworkMode'\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n}\n\n// validateDockerNetworkModeExpression makes sure that the network mode starts with \"container:\" followed by a valid container name\nfunc validateDockerNetworkModeExpression(image string, expr string) error {\n\tid, err := extractContainerNameFromNetworkMode(expr)\n\tif err != nil {\n\t\treturn err\n\t}","sourceCodeStart":312,"sourceCodeEnd":348,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/schema/validation/validation.go#L312-L348","documentation":"Docker network modes are either 'bridge'/'host'/default or 'container:<name>'. extractContainerNameFromNetworkMode is given a mode it cannot parse into a container name, so it returns an actionable error with code INIT_DOCKER_NETWORK_INVALID_MODE and a fix suggestion.","triggerScenarios":"An artifact's sync/automation networkMode string is neither empty/bridge/host nor of the form container:<name>; called from validateDockerNetworkModeExpression and validateDockerNetworkContainerExists.","commonSituations":"Typos like 'container:foo:extra', 'network:custom', or bare container names missing the 'container:' prefix in skaffold.yaml.","solutions":["Format the network mode as container:<container-name> (e.g. container:mydb).","Use a supported simple mode (bridge or host) if no container network is intended.","Follow the suggestion in the actionable error (FIX_DOCKER_NETWORK_MODE_WHEN_EXTRACTING_CONTAINER_NAME)."],"exampleFix":"# before\nnetworkMode: mydb\n# after\nnetworkMode: container:mydb","handlingStrategy":"validation","validationCode":"func parseNetworkMode(mode string) (string, bool) {\n    switch mode { case \"\", \"bridge\", \"host\": return \"\", true }\n    if strings.HasPrefix(mode, \"container:\") && len(strings.Split(mode, \":\")) == 2 {\n        return strings.TrimPrefix(mode, \"container:\"), true\n    }\n    return \"\", false\n}","typeGuard":"name, ok := parseNetworkMode(mode); if !ok { /* invalid mode */ }","tryCatchPattern":"_, err := validateDockerNetworkModeExpression(...)\nvar se *sErrors.Error\nif errors.As(err, &se) && se.ErrCode == proto.StatusCode_INIT_DOCKER_NETWORK_INVALID_MODE {\n    // rewrite mode to container:<name> and retry\n}","preventionTips":["Always use the container:<name> form for container network modes","Only use bridge/host/empty otherwise","Avoid extra colons or suffixes in the mode string"],"tags":["docker","network-mode","validation"],"backgroundTag":"invalid-docker-network-mode","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"}