【问题标题】:Stop all docker containers at once on Windows在 Windows 上一次停止所有 docker 容器
【发布时间】:2021-12-23 13:43:00
【问题描述】:

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

docker stop 仅适用于 1 个容器。

任何命令/脚本让它停止所有容器?

【问题讨论】:

    标签: docker command-line


    【解决方案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 BashBash for Windows 中,您可以使用以下 Linux 命令:

    docker stop $(docker ps -q)
    

    注意:如果没有容器在运行,这将失败

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

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

    【讨论】:

      【解决方案2】:

      在 PowerShell 中,您也可以使用此语法

      docker container stop $(docker container list -q)

      【讨论】:

      • docker container stop $(docker ps -q)
      • docker container stop $(docker container ls --quiet) || true 如果您需要忽略 no container 错误。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我的两分钱。

        如果您想阻止它们按某些条件过滤

        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
        

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2016-02-21
            • 2018-01-03
            • 2023-03-18
            • 2021-03-06
            • 1970-01-01
            • 2019-12-15
            • 2016-11-22
            • 1970-01-01
            相关资源
            最近更新 更多