GoogleContainerTools/skaffold · error

creating skaffold network %s: %w

Error message

creating skaffold network %s: %w

What it means

The local docker action exec environment (pkg/skaffold/actions/docker) creates a dedicated Docker network named after the skaffold run before executing custom actions. If docker NetworkCreate fails, PrepareActions aborts with this wrapped error. It surfaces underlying Docker daemon/network-driver failures.

Source

Thrown at pkg/skaffold/actions/docker/exec_env.go:112

	}

	return &ExecEnv{
		logger:              l,
		client:              client,
		tracker:             tracker,
		portManager:         dockerport.NewPortManager(),
		pResources:          resources,
		network:             network,
		shouldCreateNetwork: shouldCreateNetwork,
		acsCfgByName:        acsCfgByName,
		envVars:             envVars,
	}, nil
}

func (e ExecEnv) PrepareActions(ctx context.Context, out io.Writer, allbuilds, _ []graph.Artifact, acsNames []string) ([]actions.Action, error) {
	if e.shouldCreateNetwork {
		if err := e.client.NetworkCreate(ctx, e.network, nil); err != nil {
			return nil, fmt.Errorf("creating skaffold network %s: %w", e.network, err)
		}
	}

	e.logger.Start(ctx, out)

	return e.createActions(ctx, out, allbuilds, acsNames)
}

func (e ExecEnv) Cleanup(ctx context.Context, out io.Writer) error {
	if !e.shouldCreateNetwork {
		return nil
	}

	if err := e.client.NetworkRemove(ctx, e.network); err != nil {
		return errors.Wrap(err, "cleaning up skaffold created network")
	}

	return nil

View on GitHub (pinned to a1189de023)

Solutions

  1. Verify Docker is running: docker info; start Docker Desktop or the dockerd service if not.
  2. Check for a conflicting existing network (docker network ls | grep <network>) and remove stale ones with docker network rm.
  3. Confirm your docker context/DOCKER_HOST points at the intended daemon and that the bridge network driver is available.

Example fix

// before
docker network rm skaffold-network  # stale network from previous failed run
skaffold verify ...
// after
docker network ls  # confirm clean state, then rerun
skaffold verify ...
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify daemon reachable and no conflicting network before running actions
docker info > /dev/null && ! docker network inspect skaffold-network > /dev/null 2>&1

Try / catch

try {
  await skaffold.verify(...);
} catch (e) {
  if (/creating skaffold network/.test(String(e))) {
    execSync('docker network prune -f'); // clear stale networks then retry once
    await skaffold.verify(...);
    return;
  }
  throw e;
}

Prevention

When it happens

Trigger: Running skaffold actions locally (verify/run with local execution mode) where e.client.NetworkCreate fails — Docker daemon unreachable, network name already exists with conflicting config, or no bridge driver available.

Common situations: Docker Desktop not running; docker context pointing at a remote daemon that rejects network creation; leftover network from a previous crashed run with the same name; rootless-docker limitations.

Related errors


AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05). Data as JSON: /api/errors/ca241bd8a47c27a1. Report an issue: GitHub.