在使用 docker-compose 命令时,你可能会遇到类似以下的错误:
Permission denied while trying to connect to the Docker daemon socket
这通常是因为当前用户没有访问 Docker 守护进程的权限。本文将为你提供几种常见且有效的解决方案。
这是最常用也最安全的方法。Docker 安装后会创建一个名为 docker 的用户组,只需将你的用户加入该组即可:
sudo usermod -aG docker $USER
执行后请重新登录系统或运行以下命令激活组权限:
newgrp docker
如果你只是临时需要权限,可以在命令前加上 sudo:
sudo docker-compose up
但不建议长期使用此方法,因为存在安全风险。
Docker 通过 Unix socket /var/run/docker.sock 通信。确保该文件可被 docker 组访问:
ls -l /var/run/docker.sock
正常输出应类似:
srw-rw---- 1 root docker ... /var/run/docker.sock
如果不是,请运行:
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
无需重启 Docker 服务,直接运行以下命令测试:
docker-compose --version
如果不再报错,说明权限问题已解决。