在Windows上立即停止所有docker容器
如何停止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
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 Bash或Bash 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}
通过使用pipe和foreach我避免了在特定机器上没有此类容器时返回的错误,因为docker stop或docker 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)