在使用 docker-compose 命令时,你是否遇到过类似以下的错误?
Permission denied while trying to connect to the Docker daemon socket
这通常是因为当前用户没有权限访问 Docker 守护进程。本文将为你提供几种常见且有效的解决方案。
1. 将用户加入 docker 用户组
最推荐的方式是将你的用户添加到 docker 用户组:
sudo usermod -aG docker $USER
执行后请重新登录系统或运行以下命令激活组权限:
newgrp docker
2. 使用 sudo 运行(不推荐长期使用)
临时方案是使用 sudo 执行命令:
sudo docker-compose up
但出于安全和便利性考虑,建议优先采用用户组方式。
3. 检查 docker.sock 文件权限
Docker 守护进程通过 /var/run/docker.sock 通信。确保其权限正确:
ls -l /var/run/docker.sock
正常应显示所属组为 docker。若异常,可尝试重启 Docker 服务:
sudo systemctl restart docker
4. 验证是否生效
无需 root 权限运行以下命令测试:
docker-compose --version
若能正常输出版本号,说明权限问题已解决。
如仍存在问题,建议检查系统日志或查阅官方文档进一步排查。