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

时间:2018-02-15 17:42:35

标签: docker command-line

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

docker stop仅适用于1个容器。

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

6 个答案:

答案 0 :(得分:31)

您可以使用以下命令创建批处理(.bat)文件:

@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 Bash或Bash for Windows中,您可以运行:

docker stop $(docker ps -q)

答案 1 :(得分:19)

对于有兴趣的人,可以在Powershell中使用

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

答案 2 :(得分:3)

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

docker container stop $(docker container list -q)

答案 3 :(得分:2)

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

答案 4 :(得分:0)

我的两分钱。

如果要阻止它们按某些条件过滤

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}

使用 pipe foreach 可以避免由于 docker stop 而在特定计算机上没有此类容器的情况下返回的错误 docker rm 至少需要一个参数。

此脚本与

结合使用
docker container run image_tag --name=container_name

以便以后要停止并取出容器时使用过滤器。

答案 5 :(得分:-3)

您可以使用Portainer工具来管理Docker环境,它为您提供UI仪表板,您还可以在其中停止所有容器。 enter image description here