默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。 而只有 root 用户和docker 组的用户才可以访问 Docker 引擎的Unix socket。 (可以参考:Docker架构及组件剖析)

docker 组内用户执行命令的时候会自动在所有命令前添加 sudo。因为设计或者其他的原因,Docker 给予所有 docker 组的用户相当大的权力(虽然权力只体现在能访问 /var/run/docker.sock 上面)。

默认情况下,Docker 软件包是会默认添加一个 docker 用户组的。Docker 守护进程会允许 root 用户和 docker组用户访问 Docker。

出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。  因此,更好地做法是将需要使用 docker 的用户加入 docker用户组。

 

解决办法:

1.创建docker组(已经存在则不用创建)

sudo groupadd docker

2.添加当前用户到docker组

sudo gpasswd -a ${USER} docker

3.重启 docker服务

sudo systemctl restart docker 

4.切换到docker组

newgrp docker