使用docker删除获取权限被拒绝错误

时间:2017-11-15 02:33:48

标签: linux ubuntu docker

我正在按照教程进行操作,在当前步骤中,我应该删除任何预先存在的docker容器

docker rm -f $(docker ps -aq)

我通常必须使用sudo来使用docker命令,所以我尝试了

sudo docker rm -f $(docker ps -aq)

但我得到了这个

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.32/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied
"docker rm" requires at least 1 argument.
See 'docker rm --help'.

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

Remove one or more containers

通常,当我忘记使用sudo时,我会收到权限错误,但在这种情况下我会拥有它。

有谁知道什么是错的?

由于

修改

我试过这个

sudo docker rm -f $(sudo docker ps -aq)

但是

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

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

Remove one or more containers

2 个答案:

答案 0 :(得分:0)

我认为您没有任何预先存在的容器,此命令sudo docker ps -aq的结果似乎为空,这将导致总命令为sudo docker rm -f而没有任何容器ID' s 。您可以跳过此命令,因为没有预先存在的容器。

答案 1 :(得分:0)

您在sudo的需求和另一个答案中提到的可能“空”容器列表之间合并了几个不同的问题。

另一个答案是完全正确的,这个命令组合可能会导致docker rm错误,因为docker ps -aq无法返回任何内容,让docker rm命令没有选项,提示帮助文本。

当然,“内部”命令无法返回任何原因有两个原因:

  1. 实际上没有运行或退出的容器;在这种情况下,您可以忽略错误docker rm,或者单独运行docker ps -aq命令来说服自己没有返回容器。
  2. 另一个原因是由于缺少与Docker守护程序通信的权限而导致命令失败。在第一个示例中,您显示在remove命令上使用sudo,但在内部ps命令上没有使用docker ps,这表明它无法与docker套接字通信。输出可能会令人困惑,因为您会看到两个错误;每个命令中有一个:“获得权限被拒绝...... ”来自docker rm的非sudo版本,第二行“ docker rm至少需要.. “来自sudo没有任何要删除的内容,因为第一个命令失败。
  3. 您需要docker使用/var/lib/docker.sock客户端的原因是因为它通过位于root的UNIX套接字与Docker引擎进行通信,该套接字由{{1}进行写访问控制(uid所有者)和docker群组所有者。有关使用sudo for Docker命令的更多信息,请参阅post-installation setup docs以及有关如何允许普通用户访问套接字的信息,如果您选择。在确定要求sudo或将用户添加到docker组之间做出决定之前,请务必阅读该页面上有关允许的内容的警告。

    如果您确实将用户添加到docker群组,则不再需要sudo用于Docker命令,并且可以忽略任何前面带有sudo前缀的指南/教程所有docker客户端命令。