Installation on Windows
winget install Docker.DockerDesktop installs Docker Desktop, which bundles the engine, the client, Compose, and the graphical interface. The engine runs inside a Linux distribution managed by WSL2: this is the recommended mode, much more performant and lightweight than the old Hyper-V backend. Enable WSL2 before installation with wsl --install (PowerShell as administrator), then restart.
After installation, launch the Docker Desktop application at least once: as long as it is not started, docker ps fails with a connection error to the daemon.
docker --version only proves the client is present: the command answers even when the engine is stopped. On Docker Desktop, however, the engine only runs while the application is launched — which is precisely when it may be stopped. To verify that the engine actually responds, run docker run --rm hello-world: this command pulls a small image, starts a container, and confirms that the client → pipe → engine chain works end to end.
WSL2 and integration
Docker Desktop offers to integrate the engine with your WSL2 distributions ("WSL Integration" setting): once enabled for a distribution, the docker command is available there directly, and containers access the WSL Linux filesystem with far better performance than through mounted Windows paths. Prefer storing your projects in the WSL filesystem (\\wsl$\…) rather than under C:\Users\… to avoid the slowness of cross-system access.
Common pitfalls
On the Windows side, there is no systemd service nor a native /var/run/docker.sock socket: the client communicates with the daemon through a named pipe (npipe:////./pipe/docker_engine). The client configuration is in %USERPROFILE%\.docker\config.json. Keep in mind that this named pipe, like the Unix socket on Linux, grants near-root control over the machine: anyone with access to it can start privileged containers and mount the host filesystem. Never expose this pipe (nor the daemon over TCP) to untrusted users or networks. Finally, clearly distinguish Linux containers (the default, via WSL2) from Windows containers: the switch is made in Docker Desktop and changes the entire set of compatible images.