open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
— the Docker client on Windows could not open the named pipe that Docker Desktop's Linux
engine listens on. Nearly always Docker Desktop is simply not running: start it, wait until
docker version shows a Server: block, and run your command again.
If Docker Desktop is running and the error stays, read the pipe name in the message. The
client prints the endpoint it tried, so a leftover DOCKER_HOST variable shows up
right there. Clear it and the Docker Desktop context works again.
The error
PS> docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
failed to connect to the docker API at npipe:////./pipe/dockerDesktopLinuxEngine; check if the path is correct and if the daemon is running: open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
That is the message after a fresh sign-in with Docker Desktop not started. The second cause,
a DOCKER_HOST pointing at a pipe that does not exist, prints the same sentence with
the name it was given, here one with a trailing X:
PS> docker ps
failed to connect to the docker API at npipe:////./pipe/dockerDesktopLinuxEngineX; check if the path is correct and if the daemon is running: open //./pipe/dockerDesktopLinuxEngineX: The system cannot find the file specified.
docker version fails the same way but prints its Client: block first,
because that half needs no engine.
Why it happens
docker.exe is only a client. Every command is an API call to the engine, and on
Windows that call goes through a named pipe. The desktop-linux context points at
npipe:////./pipe/dockerDesktopLinuxEngine, a pipe that exists only while Docker
Desktop runs. Windows opens pipes like files, so a missing pipe comes back as the ordinary
file-not-found error.
The usual trigger is a reboot. Unless "Start Docker Desktop when you sign in to your computer"
is ticked under Settings, General, there is no engine until you open the app; on the test PC
that setting was off. The second cause is an override: DOCKER_HOST beats the
active context, and docker context ls says so.
PS> docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * Current DOCKER_HOST based configuration npipe:////./pipe/dockerDesktopLinuxEngineX
desktop-linux Docker Desktop npipe:////./pipe/dockerDesktopLinuxEngine
Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.
The fix
Start Docker Desktop from the Start menu, or from PowerShell:
Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"
The engine needs a little while after the window appears. When the cause is the variable,
clear it; the client falls back to the desktop-linux context:
PS> $env:DOCKER_HOST = $null
PS> docker version
Client:
Version: 29.8.2
...
Context: desktop-linux
Server: Docker Desktop 4.95.0 (242831)
Engine:
Version: 29.8.2
...
$env:DOCKER_HOST = $null fixes the current window only. If the variable is back in
a new window, it is stored as a user or system environment variable; delete it there. Only
set DOCKER_HOST on purpose, for example to reach a remote engine, and prefer a
named context for that, since docker context ls shows where each one points.
How it was reproduced
On Windows 11 with Docker Desktop 4.95.0 (client and engine 29.8.2) in Windows PowerShell 5.1.
The first message was captured on October 16, 2026 after a sign-in with Docker Desktop not
started; Start-Process on the Desktop executable and a wait of about 45 seconds
fixed it, and docker version then reported engine 29.8.2. For the second cause, on
October 22, Docker Desktop had to stay running for other work on the same PC, so instead of
quitting it the client was pointed at a pipe that does not exist with
$env:DOCKER_HOST = "npipe:////./pipe/dockerDesktopLinuxEngineX".
docker version, docker ps and docker run all failed with
exit code 1 and the message above. A second made-up pipe name produced the same sentence with
that name in it, which shows the client reports whatever endpoint it tried. Setting the
variable to $null brought back the desktop-linux context, and
docker run --rm alpine echo hello printed hello. The start command
was not needed on that second run because the engine was already up.
Frequently asked
- Why does docker say the system cannot find the file specified on Windows?
- The client could not open the named pipe of the Docker engine. That pipe exists only while Docker Desktop runs, so the message almost always means Docker Desktop is not started yet.
- How do I start the Docker engine on Windows?
- Open Docker Desktop from the Start menu, or run Start-Process with the path to Docker Desktop.exe in PowerShell. When docker version prints a Server block, the engine is ready.
- Docker Desktop is running but I still get the dockerDesktopLinuxEngine error. Why?
- Something points the client elsewhere, usually a DOCKER_HOST environment variable, which overrides the active context. Run docker context ls to see the endpoint and the warning, then clear the variable.
More decoded errors in the Fixes category. What sits behind that pipe, the WSL distribution and the engine's disk included, is in What Docker Desktop Actually Runs on Windows.