在Windows上立即停止所有docker容器

在Windows上立即停止所有docker容器,docker,command-line,Docker,Command Line,如何停止Windows上运行的所有docker容器 docker stop仅适用于1个集装箱 任何使其停止所有容器的命令/脚本?您可以创建一个批处理文件(.bat或.cmd),其中包含以下命令: @ECHO OFF FOR /f "tokens=*" %%i IN ('docker ps -q') DO docker stop %%i 如果要直接在控制台中运行此命令,请将%%i替换为%i,如: FOR /f "tokens=*" %i IN ('dock

如何停止Windows上运行的所有docker容器

docker stop
仅适用于1个集装箱


任何使其停止所有容器的命令/脚本?

您可以创建一个批处理文件(.bat或.cmd),其中包含以下命令:

@ECHO OFF
FOR /f "tokens=*" %%i IN ('docker ps -q') DO docker stop %%i
如果要直接在控制台中运行此命令,请将
%%i
替换为
%i
,如:

FOR /f "tokens=*" %i IN ('docker ps -q') DO docker stop %i
Git BashBash for Windows中,您可以使用以下Linux命令:

docker stop $(docker ps -q)
注意:如果没有容器运行,此操作将失败

对于PowerShell,该命令与Linux非常相似:

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

对于感兴趣的人,可以使用Powershell实现这一点

docker ps -q | % { docker stop $_ }
我的两分钱

如果要阻止它们,请按某些条件进行筛选

docker ps -a -q --filter "name=container_name" --format="{{.ID}}" | ForEach-Object -Process {docker stop $_ } 
或者如果你想停下来把它们一起移除

docker ps -a -q --filter "name=container_name" --format="{{.ID}}" | ForEach-Object -Process {docker rm $_ -f}
通过使用pipeforeach我避免了在特定机器上没有此类容器时返回的错误,因为docker stopdocker rm至少需要一个参数

此脚本与以下脚本组合使用:

docker container run image_tag --name=container_name

为了以后在您想要停止并移除容器时使用过滤器。

如果问题的动机是恢复Docker占用的内存(在我的情况下,这就是我到达此页面的原因),我发现唯一的方法是完全停止Docker Desktop。您可以通过右键单击通知区域(右下角)中的鲸鱼图标来完成此操作退出Docker Desktop
重新启动Docker Desktop时,所有容器都会重新出现,Docker甚至会再次自动将它们设置为up

在PowerShell中,您也可以使用此语法


docker container stop$(docker container list-q)

docker container stop$(docker ps-q)