如何停止在Windows上运行的所有docker容器?
docker stop
仅适用于1个容器。
使其停止所有容器的任何命令/脚本?
答案 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仪表板,您还可以在其中停止所有容器。