报错 Cannot connect to the Docker daemon 怎么解决?

报 Is the docker daemon running 时按序排查:systemctl status/start docker 确认守护进程、sudo docker info 测连通、把用户加入 docker 组解决权限。本文给出完整排查链。

最佳实践
报错 Cannot connect to the Docker daemon 怎么解决?封面

排查主线:这个错误表示 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 里的残留,再启动。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台