即使是linux老鸟也可能只靠卸载虚拟机主机的问题,其实很简单就可以破。
问题描述如下:
看标红的ERROR
说明 Docker 守护进程未运行或者你的用户无权访问它。
但其实之前我就已经运行过vulhub-master的里的其他子文件了,这次居然up不了。
而且rm -r vulhub-master以后重新unzip,再试了还是不行
于是
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
一切正常,docker状态是active。
那就确定是守护进程出了问题(因为docker本身都运行不起来的话那就谈不上docker的进程了)。虽然我不知道守护进程是个什么东东。
那既然是名曰守护,那就一定守护者某样东东。。
于是就可以推测,要么是我没有权限访问守护,要么是守护压根没有开启
然后我们直接 docker ps看守护给回显,如下
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.39/containers/json: dial unix /var/run/docker.sock: connect: permission denied
然后看到明显的 permission denied
明显是被拒绝了,permission是许可的意思,在这里是权限。权限被拒绝就是权限不够。
那么如果是守护没开,回显是cannot connect
Cannot connect to the Docker daemon at unix:///var/run/docker.sock: Dial unix:///var/run/docker.sock: connect: no such file or directory
官方区分二者的办法是
ls -l /var/run/docker.sock
正常的回显是:
说看他的套接字,也是看它的回显,但我的个人用法是,这个命令可以用来看是否已经可以访问了
其实呢,状态active就可以判断是权限不足了。这时候只要开权限就好。
办法也很简单
sudo usermod -aG docker $USER
newgrp docker 或重新登录
用官方办法验证 docker ps 能否正常执行
运行以上代码就可以了。
结论:将用户添加到 docker
组相当于授予其 root
权限,因为 Docker 可通过特权容器访问主机系统。虽然不知道这个特权容器是个什么东东。。但这个方法至少比你重装主机强。尤其是当你还对系统有其他配置时。
附议:
如果你的xshell像我这样调好了,但是主机还是denied,你就newgrp一下就行,当刷新用。亲测。