在 Windows 上立即停止所有码头容器

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

docker stop只适用于一个容器。

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

71839 次浏览

您可以创建一个包含以下命令的 批处理文件批处理文件(。蝙蝠。 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用于 Windows 的 Bash中,您可以使用以下 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}

通过使用 烟斗Foreach,我避免了在特定机器上没有此类容器时返回的错误,因为 码头站码头至少需要一个参数。

此脚本与

docker container run image_tag --name=container_name

以便在以后需要停止和删除容器时使用过滤器。

如果这个问题的动机是为了恢复被 Docker 占据的内存(在我的例子中,这就是我来到这个页面的原因) ,我发现唯一的方法就是完全停止 Docker 桌面。可以通过右键单击通知区域(右下) > 退出 Docker 桌面中的 鲸鱼图标来实现。 重新启动 Docker 桌面时,所有容器都会重新出现,Docker 甚至会再次自动将它们设置为 起来

在 PowerShell 中,还可以使用这种语法

docker container stop $(docker container list -q)

docker stop $(docker ps -aq)

停止所有正在运行的集装箱。

docker rm $(docker ps -aq)

删除所有容器。