Skip to content

doctor: "raise the machine's allocation in Docker Desktop → Resources" is wrong on Windows/WSL2 (.wslconfig governs memory) #400

Description

@LukasWodka

Symptom

On Windows with Docker Desktop's WSL2 backend (the default), doctor fails a too-small machine with:

✖ Not ready — not enough free compute to start a training.
Free some up, or raise the machine's allocation in Docker Desktop → Resources.

That remedy is wrong on WSL2: Docker Desktop has no Resources → Memory slider there — the VM's memory is governed by %UserProfile%\.wslconfig ([wsl2] memory=…) + wsl --shutdown. A field user (2026-07-24) followed the hint into Docker Desktop and found nothing to raise; the machine stayed "not ready" until the per-run allocation was lowered instead.

Where

  • internal/cli/doctor.go:394-397 — the roll-up hardcodes the Docker Desktop remedy, unconditionally (no OS/backend guard). Same phrasing again at doctor.go:373 (stuck-Pending pods).
  • The underlying verdict is fine: internal/doctor/doctor.go:567-638 (checkNodeFit) correctly compares RESOURCE_REQUESTS per Ready node against allocatable.
  • Precedent already in-repo: internal/cli/resources_set.go:490-492 gates the equivalent advice behind runtime.GOOS == "darwin".
  • There is no WSL/backend detection anywhere in the repo (zero hits for wsl/wslconfig across .go/.sh/.ps1/.md).

Fix

Minimal, detection-free version: on runtime.GOOS == "windows", replace the remedy with both levers, e.g.

Free some up, or give Docker more memory: WSL2 backend (default) → set [wsl2] memory=… in %UserProfile%\.wslconfig, then wsl --shutdown and restart Docker Desktop; Hyper-V backend → Docker Desktop → Settings → Resources.

On darwin keep the current text; on linux drop the Docker Desktop reference. (Optional follow-up: actual backend detection — e.g. docker info OperatingSystem/KernelVersion contains "WSL2" — to print only the applicable lever.)

Apply the same treatment to both sites (doctor.go:397, doctor.go:373).

Acceptance

  • On Windows, doctor's compute remedies mention .wslconfig (and never point at a slider that doesn't exist as the only option).
  • darwin/linux texts unchanged/appropriate.
  • Unit test asserting the per-GOOS remedy strings.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions