删除所有已停止的容器:" docker rm"需要至少1个参数

时间:2017-07-15 18:48:59

标签: docker

我正在读一本关于码头工作者的书。已经有几年了。

我引用:

If you want to get rid of all your stopped containers, you can use
the output of docker ps -aq -f status=exited , which gets the
IDs of all stopped containers. For example:
$ docker rm -v $(docker ps -aq -f status=exited)

当我跑步时,我得到:

michael@michael-desktop:~$ sudo docker rm -v $(docker ps -aq -f status=exited)
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/containers/json?all=1&filters=%7B%22status%22%3A%7B%22exited%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied
"docker rm" requires at least 1 argument(s).
See 'docker rm --help'.

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

Remove one or more containers

你能帮我理解我应该做些什么来获得目的。

5 个答案:

答案 0 :(得分:5)

这可能只是意味着您没有状态为“已退出”的容器。

然后命令变为:

sudo docker rm -v

缺少任何参数会触发您看到的错误消息。

但是今天,无论如何,这将由docker container prune完成。

答案 1 :(得分:4)

为了删除所有已停止的容器,您可以先运行

$ docker ps -a

这将为您提供正在运行和已停止的容器的列表,您可以从中选择要删除的容器。但是如果你想要摆脱所有停止的容器,那么你需要使用

$ docker container prune 

通过向您提供以下消息来删除所有已停止的容器。

Warning! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
your container id list will be printed.

答案 2 :(得分:3)

$ sudo docker rm -v $(docker ps -aq -f status=exited)
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get
http://%2Fvar%2Frun%2Fdocker.sock/v1.30/containers/json?all=1&filters=%7B%22status%22%3A%7B%22exited%22%3Atrue%7D%7D:
dial unix /var/run/docker.sock: connect: permission denied
"docker rm" requires at least 1 argument(s).
See 'docker rm --help'.

拒绝权限消息来自嵌入式docker ps命令。它由您的父sudo命令外部的外壳程序运行,并将输出传递到sudo以root身份运行docker rm。有几种修正。

简单的选项,用docker ps运行sudo

$ sudo docker rm -v $(sudo docker ps -aq -f status=exited)

第二种方法是以root用户身份运行整个shell:

$ sudo -s
# docker rm -v $(docker ps -aq -f status=exited)
# exit

或者您可以授予用户访问docker套接字的权限,因此不再需要sudo

$ sudo usermod -aG docker $USER
$ newgrp docker

以上是一次更改,使该用户可以通过docker隐式访问root。然后您可以运行:

$ docker rm -v $(docker ps -aq -f status=exited)

答案 3 :(得分:0)

似乎正在发生的事情toArray是由不同的用户启动的。因此,由于docker问题无法运行docker ps -aq -f status=exited因此导致permission结果。

由于空白结果,blank抱怨缺少参数。

docker rm

答案 4 :(得分:0)

实际上是权利问题...。错误消息:

mongoDatabase = mongoClient.getDatabase("DBName");
MongoCollection<Document> col = mongoDatabase.getCollection("CollectionName");
Bson filter = Filters.and(
              Filters.ne("totalmarks", 5),
              Filters.ne("totalmarks",15));
MongoCursor<Document> cursor = col.find(filter).iterator();

告诉您无法连接到在root用户下运行的docker守护程序。您应该决定是要以Got permission denied while trying to connect to the Docker daemon socket at unix:// 还是以root用户使用docker。

Manage Docker as a non-root user

进一步说,# sudo抱怨没有找到要删除的图像,因此无法删除图像。

命令docker rm在最新的docker版本18.09.0上还不错,但是您也可以使用docker rm $(docker ps -aq -f status=exited),这是更具交互性的方式。