在Windows上一次停止所有Docker容器

9avjhtql  于 2023-02-11  发布在  Docker
关注(0)|答案(6)|浏览(270)

如何停止Windows上运行的所有Docker容器?
docker stop仅适用于1个容器。
是否有任何命令/脚本可以停止所有容器?

r8xiu3jd

r8xiu3jd1#

您可以创建一个批处理文件.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)
  • 注意:如果没有container正在运行,此操作将失败 *

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

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

wnvonmuf2#

对于那些感兴趣的人,这可以在Powershell中使用

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

wwwo4jvm3#

在PowerShell中,也可以使用以下语法

docker container stop $(docker container list -q)
slhcrj9b

slhcrj9b4#

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

insrf1ej

insrf1ej5#

我的意见。
如果你想阻止他们按某些标准过滤

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

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

l3zydbqr

l3zydbqr6#

docker stop $(docker ps -aq)

停止所有运行的容器。

docker rm $(docker ps -aq)

以删除所有容器。

相关问题