如何删除所有正在运行的Docker容器?

时间:2016-06-26 17:35:00

标签: docker

我记得使用

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工具箱安装中运行良好。

10 个答案:

答案 0 :(得分:10)

到现在为止(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

答案 1 :(得分:5)

在cmd中运行时出现此问题。切换到PowerShell,它工作了!

答案 2 :(得分:3)

使用:

docker rm -f $(docker ps -aq)

答案 3 :(得分:1)

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

但是使用 Cygwin Git Bash 为我解决了这个问题。

答案 4 :(得分:1)

如果有人需要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 :(得分:1)

在Windows PowerShell中运行docker命令将执行并运行大多数命令

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

docker stop $(docker ps -aq)

答案 6 :(得分:0)

使用此:

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

如果要包含先前停止的容器:

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

答案 7 :(得分:0)

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

docker stop $(docker ps -aq)

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

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

docker rm $(docker ps -aq)

答案 8 :(得分:0)

单个命令删除所有停止运行的容器(先停止然后修剪/删除它们。对我而言一直如此。

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

答案 9 :(得分:0)

尝试使用此命令。

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