Docker:删除正在运行的容器时出错

时间:2017-11-01 09:54:47

标签: docker docker-compose

我正在尝试使用以下命令删除正在运行的容器并删除所有下载的图像:

docker ps -aq | xargs docker rm -f

docker images -aq | xargs docker rmi -f

但我得到了这个

"docker rm" requires at least 1 argument.
See 'docker rm --help'.

Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]

"docker rmi" requires at least 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

这是我的环境

Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:42:18 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:56 2017
 OS/Arch:      linux/amd64
 Experimental: false
docker-compose version 1.16.1, build 6d1ac21
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

这里有什么不对吗?请帮忙! 谢谢

5 个答案:

答案 0 :(得分:2)

您需要先停止运行容器然后将其删除

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

对于图像,请尝试删除悬空图像

docker rmi $(docker images -f dangling=true -q)

要删除所有图像,请使用

docker rmi $(docker images -q)

答案 1 :(得分:1)

看起来你错误地传递了参数。 尝试删除所有容器:

docker rm -f $(docker ps -qa)

并删除所有图片:

docker rmi $(docker images -q)

答案 2 :(得分:1)

关注Docker rm doc

  

强制删除正在运行的容器

     

此命令将强制删除正在运行的容器。

$ docker rm --force containerName
containerName

删除所有已停止的容器:

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

对于Docker镜像:

Docker Image doc

  

如果使用-f标志并指定图像的短ID或长ID,则   此命令取消标记并删除与指定匹配的所有图像   ID。

示例:

$ docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

$ docker rmi -f fd484f19954f

Untagged: test1:latest
Untagged: test:latest
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

根据我的个人经验,当我需要强制删除容器时,我通常会这样做:

docker container rm -f containerName

而且,如果我不再需要我使用的图像:

 docker image rm -f imageName

请注意,如果图像仍被容器使用,上述命令将引发错误。

答案 3 :(得分:0)

xargs docker rm -f很可能不调整任何内容(您应该尝试运行此操作),因此没有参数传递给docker ps -aq

PS-通常来说,建议稍后尝试运行将用作参数的表达式,以查看其计算结果,尤其是在删除之前。

答案 4 :(得分:0)

-rxargs一起使用,这意味着如果为空则不执行:

docker ps -aq | xargs -r docker rm -f
docker images -aq | xargs -r docker rmi -f