首次安装docker后执行docker命令报错?
Posted 奇妙之二进制
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了首次安装docker后执行docker命令报错?相关的知识,希望对你有一定的参考价值。
按照正常步骤安装了docker,
开心的执行docker命令:
vic@ubuntu:~/Desktop$ 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.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
网上都能搜索到解决方案,但是我们今天想探究原因。
阅读错误提示:当尝试连接到docker daemon的unix套接字unix:///var/run/docker.sock时,获取权限被拒绝。
从这里我们知道了一个细节,执行docker ps命令会向docker daemon发起本地套接字连接,套接字文件在/var/run/docker.sock。
我们来看下这个文件的权限:
vic@ubuntu:~/Desktop$ ls -al /var/run/docker.sock
srw-rw---- 1 root docker 0 Apr 3 05:03 /var/run/docker.sock
可以看到属主是root,因为docker daemon是以root用户启动,属组是docker,其他人没有任何权限,所以我们只要把我们的用户添加到docker组便能获取对该文件的读写权限了,也就能连上docker daemon了。
vic@ubuntu:~/Desktop$ ps -aux| grep docker
root 1051 0.0 3.8 1233800 76528 ? Ssl 05:03 0:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
vic 2515 0.0 0.0 9040 712 pts/0 S+ 05:31 0:00 grep --color=auto docker
vic@ubuntu:~/Desktop$
解决办法:
$ # check if docker group exists
$ cat /etc/group | grep docker
docker:x:998:
$ # if it doesn't, create with this command:
$ #sudo groupadd docker
$ # add the current user to docker group
$ sudo usermod -a -G docker vic
$ # validate it
$ cat /etc/group | grep docker
docker:x:998:vic
以上是关于首次安装docker后执行docker命令报错?的主要内容,如果未能解决你的问题,请参考以下文章