如何停止所有在 Windows 上运行的码头容器?
docker stop只适用于一个容器。
docker stop
是否有任何命令/脚本使其停止所有容器?
您可以创建一个包含以下命令的 批处理文件批处理文件(。蝙蝠或 。 cmd) :
@ECHO OFF FOR /f "tokens=*" %%i IN ('docker ps -q') DO docker stop %%i
如果要在控制台中直接运行此命令,请将 %%i替换为 %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 -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)
删除所有容器。