{"record":{"id":"ef6ea50b721adbe1","repo":"hashicorp/nomad","slug":"failed-to-parse-ipv4-address-q-v","errorCode":null,"errorMessage":"failed to parse ipv4_address %q: %v","messagePattern":"failed to parse ipv4_address %q: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/docker/driver.go","lineNumber":1560,"sourceCode":"\t\tnetworkingConfig = &networkapi.NetworkingConfig{\n\t\t\tEndpointsConfig: map[string]*networkapi.EndpointSettings{\n\t\t\t\tstring(hostConfig.NetworkMode): {},\n\t\t\t},\n\t\t}\n\t}\n\n\tif len(driverConfig.NetworkAliases) > 0 {\n\t\tnetworkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)].Aliases = driverConfig.NetworkAliases\n\t\tlogger.Debug(\"setting container network aliases\", \"network_mode\", hostConfig.NetworkMode,\n\t\t\t\"network_aliases\", strings.Join(driverConfig.NetworkAliases, \", \"))\n\t}\n\n\tif driverConfig.IPv4Address != \"\" || driverConfig.IPv6Address != \"\" {\n\t\tipamConfig := &networkapi.EndpointIPAMConfig{}\n\t\tif driverConfig.IPv4Address != \"\" {\n\t\t\tipv4, err := netip.ParseAddr(driverConfig.IPv4Address)\n\t\t\tif err != nil {\n\t\t\t\treturn c, fmt.Errorf(\"failed to parse ipv4_address %q: %v\", driverConfig.IPv4Address, err)\n\t\t\t}\n\t\t\tipamConfig.IPv4Address = ipv4\n\t\t}\n\t\tif driverConfig.IPv6Address != \"\" {\n\t\t\tipv6, err := netip.ParseAddr(driverConfig.IPv6Address)\n\t\t\tif err != nil {\n\t\t\t\treturn c, fmt.Errorf(\"failed to parse ipv6_address %q: %v\", driverConfig.IPv6Address, err)\n\t\t\t}\n\t\t\tipamConfig.IPv6Address = ipv6\n\t\t}\n\t\tnetworkingConfig.EndpointsConfig[string(hostConfig.NetworkMode)].IPAMConfig = ipamConfig\n\t\tlogger.Debug(\"setting container network configuration\", \"network_mode\", hostConfig.NetworkMode,\n\t\t\t\"ipv4_address\", driverConfig.IPv4Address, \"ipv6_address\", driverConfig.IPv6Address)\n\t}\n\n\tif driverConfig.MacAddress != \"\" {\n\t\tmac, err := net.ParseMAC(driverConfig.MacAddress)\n\t\tif err != nil {","sourceCodeStart":1542,"sourceCodeEnd":1578,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/drivers/docker/driver.go#L1542-L1578","documentation":"When ipv4_address (or ipv6_address) is set in the docker driver config, the value is parsed with netip.ParseAddr before being placed into the Docker EndpointIPAMConfig. A string that is not a valid IP literal is rejected with this wrapped parse error.","triggerScenarios":"StartTask -> createContainerConfig sees driverConfig.IPv4Address != \"\" and netip.ParseAddr fails (e.g. a hostname, a CIDR suffix like 10.0.0.5/24, or a malformed octet).","commonSituations":"Passing a Docker network name or container hostname instead of an IP; including a /prefix that Docker's ipv4_address does not accept here; IPv4 text placed in the ipv6 field or vice versa; trailing whitespace/quotes from templating.","solutions":["Provide a bare, valid IPv4 address with no prefix or hostname, e.g. 10.0.0.5","Remove any /24-style CIDR suffix from ipv4_address","Ensure the value is a plain IP string without quotes/whitespace issues after template rendering"],"exampleFix":"// before\ndriver {\n  docker {\n    ipv4_address = \"10.0.0.5/24\"\n  }\n}\n// after\ndriver {\n  docker {\n    ipv4_address = \"10.0.0.5\"\n  }\n}","handlingStrategy":"validation","validationCode":"if cfg.IPv4Address != \"\" {\n  if _, err := netip.ParseAddr(cfg.IPv4Address); err != nil {\n    return fmt.Errorf(\"ipv4_address must be a bare IP, got %q\", cfg.IPv4Address)\n  }\n}","typeGuard":"func validIPv4(s string) bool { a, err := netip.ParseAddr(s); return err == nil && a.Is4() }","tryCatchPattern":"err := client.StartTask(task); if err != nil && strings.Contains(err.Error(), \"failed to parse ipv4_address\") { logBadIP(cfg.IPv4Address) }","preventionTips":["Pass bare IP literals without CIDR prefixes","Never substitute hostnames for IPs","Trim whitespace from templated values"],"tags":["docker","nomad-driver","ip-address","network","config-validation"],"backgroundTag":"invalid-ip-address","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}