Stop all docker containers at once on Windows

For those who are interested this can be accomplished in Powershell using

docker ps -q | % { docker stop $_ }

You could create a batch-file (.bat or .cmd) with these commands in it:

@ECHO OFF
FOR /f "tokens=*" %%i IN ('docker ps -q') DO docker stop %%i

If you want to run this command directly in the console, replace %%i with %i, like:

FOR /f "tokens=*" %i IN ('docker ps -q') DO docker stop %i

In Git Bash or Bash for Windows you can use this Linux command:

docker stop $(docker ps -q)

Note: this will fail if there are no containers running

For PowerShell, the command is very similar to the Linux one:

docker ps -q | % { docker stop $_ }

In PowerShell, you could also use this syntax

docker container stop $(docker container list -q)


If the motivation of the question is to recover the memory occupied by Docker (in my case, this was why I arrived at this page), I found that the only way was to stop Docker Desktop completely. You do that by right-clicking the whale icon in the notification area (bottom right) > Quit Docker Desktop. When you restart Docker Desktop, all the containers reappear, and Docker even sets them to up again automatically.