【问题标题】:How do I delete all running Docker containers?如何删除所有正在运行的 Docker 容器?
【发布时间】:2016-10-28 17:13:59
【问题描述】:

我记得用过

docker rm -f `docker ps -aq`

几个月前链接命令没有问题,但现在这不起作用,我得到以下输出:

unknown shorthand flag: 'a' in -aq`
See 'docker rm --help'.

发生了什么变化?如何在一行中删除所有正在运行的 Docker 容器?如果有帮助,我将在 Windows 10 上使用 Docker for Windows(本机使用 Hyper-V,而不使用 VirtualBox),并且我使用的命令在我之前的 Windows 8 Docker 工具箱安装中运行良好。

【问题讨论】:

  • 这对我来说看起来是正确的(我使用完全相同的命令,尽管在 OSX 上)。你最近升级了吗? (可能是 Docker for Windows 中的回归)
  • FWIW,您是否尝试过 --all 而不是 -a,只是想看看会发生什么?
  • 是的,尝试返回unknown flag: --all
  • 你的 docker 版本是多少?
  • docker ps --help 的结果是什么?

标签: docker


【解决方案1】:

到目前为止(Docker 版本 1.12)我们使用以下命令来删除所有正在运行的容器(此外,如果我们想删除卷,我们可以在以下命令中使用其各自的标签 -v 手动执行此操作),

删除所有退出的容器

docker rm $(docker ps -q -f status=exited)

删除所有停止的容器

docker rm $(docker ps -a -q)

删除所有正在运行和停止的容器

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

删除所有容器,没有任何条件

docker container rm $(docker container ps -aq)

但是,在1.13及以上版本,为了完整的系统和清理,我们可以直接使用以下命令,

docker system prune

所有未使用的容器、图像、网络和卷都将被删除。此外,单独,即单独,我们可以使用以下命令来清理组件,

docker container prune
docker image prune
docker network prune
docker volume prune

【讨论】:

  • 此语法似乎适用于 unix bash,而不是 windows 10 命令行。对吗?
  • @tatmanblue:这些命令在 docker 工具箱的 docker quickstart 终端和 docker for windows 的 powershell 上运行良好。
  • @tatmanblue 在 Windows 上尝试使用 -aq 而不是 -a -q 来指定标志。
  • 我在 power shell 中收到此错误。未知速记标志:-aq 中的“a”)参见“docker rm --help”。
【解决方案2】:

我在 cmd 中运行时遇到了这个问题。切换到 PowerShell 并且成功了!

【讨论】:

  • 非常感谢......我拉头发 30 分钟,为什么这个命令对我不起作用......
【解决方案3】:

用途:

docker rm -f $(docker ps -aq)

【讨论】:

    【解决方案4】:

    如果有人需要 Windows Shell 命令(停止和删除容器),这里是:

    for /F %c in ('docker ps -a -q') do (docker stop %c)
    for /F %c in ('docker ps -a -q') do (docker rm %c)
    

    如果你把它放在一个批处理文件中,只需将 % 添加到 %c:

    for /F %%c in ('docker ps -a -q') do (docker stop %%c)
    

    【讨论】:

      【解决方案5】:

      我也遇到过同样的问题:我在一台 Windows 机器上使用 VirtualBox 中的 Docker,命令 docker rm -f ${docker ps -aq} 运行良好。然后我切换到 Docker for Windows 并且该命令在 Windows 命令行上不起作用。

      但是使用 CygwinGit Bash 为我解决了问题。

      【讨论】:

        【解决方案6】:

        尝试使用此命令。

        docker rm -f $(docker ps | grep -v CONTAINER | awk '{print $1}')
        

        【讨论】:

          【解决方案7】:

          在 Windows PowerShell 中运行 docker 命令将执行并运行大部分命令

          希望你也记得在运行删除命令之前先停止运行容器

          泊坞窗停止 $(docker ps -aq)

          【讨论】:

            【解决方案8】:
            $ docker rm $(docker ps --filter status=created -q)
            

            在 Docker 版本 19.03.5 上测试,在 Mac OS Mojave 上构建 633a0ea。

            【讨论】:

              【解决方案9】:

              如果容器正在运行,则无法删除映像。首先使用以下命令停止所有容器。

              docker stop $(docker ps -aq)

              您是说针对 docker ps -aq 的输出运行停止。 'a' - 给我所有的容器 'q' - 仅返回容器 ID。

              然后运行以下命令删除所有容器。

              docker rm $(docker ps -aq)

              【讨论】:

                【解决方案10】:

                使用这个:

                docker rm -f $(docker ps | grep -v CONTAINER | awk '{print $1}')
                

                如果您想包含以前停止的容器:

                docker rm -f $(docker ps -a | grep -v CONTAINER | awk '{print $1}')
                

                【讨论】:

                  【解决方案11】:

                  删除所有停止和运行容器的单个命令(首先停止然后修剪/删除它们。一直为我工作。

                  docker stop $(docker ps -a -q) && docker container prune -a

                  【讨论】:

                    【解决方案12】:
                    1. 我们可以通过以下命令删除 docker ENV 中所有正在运行的容器 -

                      码头集装箱 rm -f $(码头集装箱 ls -aq)

                    它应该是魔法

                    1. 如果我们已经使用 docker-compose.yaml 运行了我们的 docker 容器,那么

                      docker-compose -f /path/to/compose/file down

                    应该有效

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-03-17
                      • 2018-04-13
                      • 1970-01-01
                      • 2019-09-27
                      • 2018-01-03
                      • 2019-10-31
                      • 2017-04-06
                      相关资源
                      最近更新 更多