Docker.sock已创建但本地命令行无法连接Docker守护进程求助
根因定位
核心问题为/var/run/docker.sock为目录而非Docker守护进程监听的Unix套接字文件:正常Unix套接字文件的权限标识以s开头,你排查得到的权限标识为d,明确是目录类型,Docker命令行无法通过目录路径和守护进程建立通信。
排查验证步骤
- 执行
file /var/run/docker.sock确认文件类型,若返回directory即可确认根因 - 执行
systemctl status docker.socket查看套接字单元的监听路径配置,确认默认监听路径为/run/docker.sock - 执行
echo $DOCKER_HOST检查是否配置了非默认的Docker连接地址,导致命令行没有走默认Unix套接字路径
解决操作步骤
- 先停止所有Docker相关服务:
systemctl stop docker.service docker.socket
- 删除误生成的docker.sock目录:
rm -rf /var/run/docker.sock
- 重启套接字单元和Docker服务,让系统自动生成正确的套接字文件:
systemctl start docker.socket docker.service
- 功能验证:
执行docker ps,若正常返回容器列表即为修复成功;也可执行ls -l /var/run/docker.sock确认权限标识以s开头,类似如下输出:
srw-rw---- 1 root docker 0 Oct 26 10:00 /var/run/docker.sock
额外注意事项
如果操作后依然报错,检查是否有自定义的Docker客户端配置:若echo $DOCKER_HOST有返回值,执行unset DOCKER_HOST清空该环境变量后再次测试即可。
内容的提问来源于stack exchange,提问作者E. van der Spoel
相关产品推荐
相关产品推荐

