hashicorp/nomad · error

task %s does not support %q networking mode

Error message

task %s does not support %q networking mode

What it means

newNetworkManager maps the task group's requested network mode (e.g. bridge, host, none) to a network isolation mode and checks the driver advertises it via caps.HasNetIsolationMode. When the driver does not support the requested mode, this error names the task and the unsupported mode.

Source

Thrown at client/allocrunner/network_manager_linux.go:80

		if _, ok := driverCaps[task.Driver]; ok {
			continue
		}

		driver, err := driverManager.Dispense(task.Driver)
		if err != nil {
			return nil, fmt.Errorf("failed to dispense driver %s: %v", task.Driver, err)
		}

		caps, err := driver.Capabilities()
		if err != nil {
			return nil, fmt.Errorf("failed to retrieve capabilities for driver %s: %v",
				task.Driver, err)
		}

		// check that the driver supports the requested network isolation mode
		netIsolationMode := netModeToIsolationMode(taskNetMode)
		if !caps.HasNetIsolationMode(netIsolationMode) {
			return nil, fmt.Errorf("task %s does not support %q networking mode", task.Name, taskNetMode)
		}

		// check if the driver needs to create the network and if a different
		// driver has already claimed it needs to initiate the network
		if caps.MustInitiateNetwork {
			if networkInitiator != "" {
				return nil, fmt.Errorf("tasks %s and %s want to initiate networking but only one driver can do so", networkInitiator, task.Name)
			}
			netManager, ok := driver.(drivers.DriverNetworkManager)
			if !ok {
				return nil, fmt.Errorf("driver %s does not implement network management RPCs", task.Driver)
			}

			nm = netManager
			networkInitiator = task.Name
		} else if len(tg.Networks) > 0 && tg.Networks[0].Hostname != "" {
			// TODO jrasell: remove once the default linux network manager
			//  supports setting the hostname in bridged mode. This currently

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Change the group network mode to one the driver supports (e.g. mode = "host"), or remove the group network block.
  2. Use a driver that supports the requested isolation mode (docker supports bridge).
  3. Upgrade the driver/Nomad on the node so capabilities include the needed isolation mode.
  4. Check driver capabilities via 'nomad node status -verbose' / plugin docs before scheduling.

Example fix

// before
network {
  mode = "bridge"
}
// after
network {
  mode = "host"
}
Defensive patterns

Strategy: validation

Validate before calling

// job-level pre-check
// group network mode must be supported by every initiating driver
if mode == "bridge" && driver != "docker" { reject() }

Prevention

When it happens

Trigger: A task group declares group 'network { mode = "bridge" }' (or similar) but a task's driver does not list the corresponding NetIsolationMode in its Capabilities, e.g. a non-DriverNetworkManager-capable custom driver used with bridge networking.

Common situations: Using bridge networking with a driver that only supports host/netns isolation; scheduling a group-network job onto a node whose driver version predates network isolation capability reporting; requesting "bridge" mode for exec/java tasks whose driver caps don't include it.

Related errors


AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04). Data as JSON: /api/errors/69009a23c7191cac. Report an issue: GitHub.