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

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

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

这里有什么问题吗?请帮忙!谢谢。


请查看 https://dev59.com/T1cO5IYBdhLWcg3w3VPU ,这可能对您有用。 - Ashish Detroja
5个回答

6

使用xargs时加上-r选项,表示如果为空则不执行:

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

5
你需要先停止正在运行的容器,然后再删除它们。
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)

3

以下是Docker rm文档的翻译:

强制删除正在运行的容器

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

$ docker rm --force containerName
containerName

要删除所有已停止的容器:

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

针对Docker镜像:

Docker镜像文档中:

如果您使用-f标志并指定图像的短或长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

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

1

看起来您传递的参数不正确。 尝试像这样删除所有容器:

docker rm -f $(docker ps -qa)

要删除所有镜像:

docker rmi $(docker images -q)


0

很可能xargs docker rm -f不会返回任何内容(您应该尝试仅运行此命令),因此没有参数传递给docker ps -aq

PS-一般来说,建议在删除之前尝试运行将用作参数的表达式,以查看其将评估为什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接