出现 permission denied while trying to connect to the Docker daemon socket
的错误,通常是因为当前用户没有权限访问 Docker 的 Unix 套接字 /var/run/docker.sock
。在 Linux 系统中,这个套接字默认只能由 root
用户或 docker
组的成员访问。
要解决这个问题,可以将当前用户添加到 docker
组中,从而获得执行 Docker 命令的权限。
解决方法
-
将用户添加到
docker
组在终端中执行以下命令,将当前用户(例如
syh
)添加到docker
组:bashsudo usermod -aG docker $USER
usermod -aG docker $USER
:将当前用户添加到docker
组中,其中$USER
会自动替换为当前用户名。- 使用当前用户名(例如
syh
)替换$USER
也是可以的,例如:sudo usermod -aG docker syh
。
-
重启 Docker 服务
bashsudo systemctl restart docker
-
重新登录
为了使组成员关系生效,您需要重新登录系统或者重启终端会话。如果不想注销当前会话,可以使用以下命令刷新当前会话:
bashnewgrp docker
-
验证权限
重新登录后,尝试运行
docker ps
命令来验证是否成功:bashdocker ps
如果没有看到 permission denied
错误,并且可以正常查看到容器列表,说明配置成功。
注意事项
- 安全性 :将用户添加到
docker
组会使该用户获得 Docker 的管理权限,相当于有root
权限,请确保用户是可信用户。 - 权限即时生效 :重新登录会话或执行
newgrp docker
命令后,权限更改才会生效。
这样设置后,普通用户就可以在不使用 sudo
的情况下运行 Docker 命令。