我正在按照教程进行操作,在当前步骤中,我应该删除任何预先存在的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
答案 0 :(得分:0)
我认为您没有任何预先存在的容器,此命令sudo docker ps -aq
的结果似乎为空,这将导致总命令为sudo docker rm -f
而没有任何容器ID' s 。您可以跳过此命令,因为没有预先存在的容器。
答案 1 :(得分:0)
您在sudo
的需求和另一个答案中提到的可能“空”容器列表之间合并了几个不同的问题。
另一个答案是完全正确的,这个命令组合可能会导致docker rm
错误,因为docker ps -aq
无法返回任何内容,让docker rm
命令没有选项,提示帮助文本。
当然,“内部”命令无法返回任何原因有两个原因:
docker rm
,或者单独运行docker ps -aq
命令来说服自己没有返回容器。sudo
,但在内部ps
命令上没有使用docker ps
,这表明它无法与docker套接字通信。输出可能会令人困惑,因为您会看到两个错误;每个命令中有一个:“获得权限被拒绝...... ”来自docker rm
的非sudo版本,第二行“ docker rm至少需要.. “来自sudo
没有任何要删除的内容,因为第一个命令失败。您需要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客户端命令。