报错 Cannot connect to the Docker daemon 怎么解决?
报 Is the docker daemon running 时按序排查:systemctl status/start docker 确认守护进程、sudo docker info 测连通、把用户加入 docker 组解决权限。本文给出完整排查链。
排查主线:这个错误表示 Docker 客户端连不上守护进程。按顺序做三件事:①sudo systemctl status docker 看守护进程在不在跑,没在跑就 start;②sudo docker info 验证守护进程本身正常;③sudo 能连、普通用户不能连 → 权限问题,把用户加进 docker 组。
第一步:守护进程在跑吗
sudo systemctl status docker
active (running)→ 跳到第二步inactive/failed→ 启动它:
sudo systemctl start docker
sudo systemctl enable docker # 顺便设置开机自启
启动失败就看日志找原因:
sudo journalctl -u docker --since "10 min ago"
常见失败原因:磁盘满、配置文件(/etc/docker/daemon.json)语法错、存储驱动不兼容。
第二步:守护进程本身正常吗
sudo docker info
能输出系统信息说明守护进程健康,问题在客户端连接(多半是权限);sudo 都连不上,回到第一步深挖守护进程日志。
第三步:解决权限
sudo usermod -aG docker $USER
newgrp docker # 或注销重登
docker ps # 免 sudo 验证
socket 文件 /var/run/docker.sock 属主是 root:docker、权限 660,组内用户才能访问。
其他环境的表现
- Mac/Windows(Docker Desktop):没有 systemctl,报这个错通常是 Desktop 应用没启动或启动中——打开 Docker Desktop 等鲸鱼图标稳定。
- WSL2:确认用的是 Docker Desktop 的 WSL 集成,或 WSL 发行版内的 docker 服务已启动。
- 远程守护进程:设了
DOCKER_HOST环境变量时客户端连的是远端,检查该变量与远端可达性(echo $DOCKER_HOST)。
观测云对照
守护进程本身纳入监控。 Docker 主机是承载层,DataKit 采集主机与 Docker 守护进程指标(容器数、磁盘、事件),守护进程异常退出也能触发告警,先于业务报错发现问题。
常见问题(FAQ)
Q:重启机器后才出现这个错?
A:docker 服务没设开机自启,sudo systemctl enable docker。
Q:daemon.json 改完启动失败?
A:JSON 语法错最常见(多了逗号),python3 -m json.tool < /etc/docker/daemon.json 校验。
Q:磁盘满会导致守护进程起不来吗?
A:会。df -h 确认,先 docker system prune(如果能起)或手动清 /var/lib/docker 里的残留,再启动。