删除所有停止的容器:“docker rm”至少需要 1 个参数
Posted
技术标签:
【中文标题】删除所有停止的容器:“docker rm”至少需要 1 个参数【英文标题】:Remove all stopped containers: "docker rm" requires at least 1 argument 【发布时间】:2017-12-20 15:45:06 【问题描述】:我正在读一本关于 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
您能帮我了解我应该怎么做才能获得预期的结果吗?
【问题讨论】:
How to remove old Docker containers的可能重复 如果你有最近的 docker 版本至少 1.11,我想,就做docker container prune
【参考方案1】:
为了移除我们所有停止的容器,你可以先运行
$ 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.
【讨论】:
使用 -f 强制修剪停止的容器。类似的图像。使用 --help 检查选项。【参考方案2】:这可能只是意味着您没有状态为“已退出”的容器。
命令变为:
sudo docker rm -v
缺少任何参数都会触发您看到的错误消息。
但是今天,无论如何,这将通过docker container prune
完成。
【讨论】:
【参考方案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
命令之外的 shell 运行,并且输出传递给 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)
【讨论】:
这似乎比我(接受的)答案更完整。赞成。【参考方案4】:似乎正在发生的是docker
是由不同的用户启动的。因此,docker ps -aq -f status=exited
由于permission
问题而无法运行,结果得到blank
结果。
运行 docker rm
抱怨由于空白结果而缺少参数。
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:
【讨论】:
【参考方案5】:其实是配股问题....报错信息:
Got permission denied while trying to connect to the Docker daemon socket at unix://
告诉你你无法连接到在 root 下运行的 docker 守护进程。您应该决定是否要使用带有# sudo
或 root 用户的 docker。
Manage Docker as a non-root user
此外,docker rm
抱怨找不到要删除的图像,因此无法删除图像。
命令docker rm $(docker ps -aq -f status=exited)
与最新的 docker 版本 18.09.0 一样好,但您也可以使用docker container prune
,这是更具交互性的方式。
【讨论】:
以上是关于删除所有停止的容器:“docker rm”至少需要 1 个参数的主要内容,如果未能解决你的问题,请参考以下文章