首次安装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命令报错?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins中执行docker命令报错

执行Docker命令报错解决办法

在docker下运行python

CentOS7安装docker启动报错

centos7.6安装pip后执行命令报错?

docker进入式 执行sh