首页/云/Docker 容器速查/Cannot connect to the Docker daemon 排查
容器排障52 条

Cannot connect to the Docker daemon 排查

报错指向守护进程不可达:按顺序查服务状态、套接字文件、context 指向与 DOCKER_HOST 环境变量,四步内可定位。

Docker 容器速查云更新于 2026-10-13

报错在说什么

这是客户端连不上守护进程时的通用报错,全文含 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?。常见根因有四个:守护进程没启动、套接字路径不对(rootless 实例)、context 指向了别的引擎、DOCKER_HOST 环境变量被改过。它和 permission denied 是两类问题,后者说明套接字存在但当前用户没有权限。

基本信息

典型报错Cannot connect to the Docker daemon ... Is the docker daemon running?
常见根因服务未启动 / 套接字路径不符 / context 指向错误 / DOCKER_HOST 被覆盖
与权限报错的差别permission denied 属另一类,套接字存在但无访问权限
排查顺序服务状态 → 套接字 → context → 环境变量
适用平台Linux 服务器、Docker Desktop(Windows/macOS)、rootless 实例

典型使用场景

  • 服务器重启后首次执行 docker 命令就报此错,先确认服务是否开机自启
  • 切换远程引擎后忘记切回来,本机命令全部失败
  • CI runner 上守护进程权限或路径与预期不符
  • rootless 环境用普通用户执行命令时找不到套接字
  • 桌面端 Docker Desktop 未启动,命令在本地终端直接报错

五步定位

五步定位
systemctl status docker --no-pager | head -20   # 1. 守护进程是否在运行
docker context ls                               # 2. 当前 context 指向哪个引擎
ls -l /var/run/docker.sock                      # 3. 默认套接字是否存在
ls -l /run/user/$(id -u)/docker.sock            # 4. rootless 实例的套接字路径
echo "DOCKER_HOST=$DOCKER_HOST"                 # 5. 环境变量是否被改过
sudo systemctl start docker                     # 确认没启动再拉起
journalctl -u docker -n 50 --no-pager           # 起不来时读第一行报错原因

检查项与判读

检查项正常表现异常含义
systemctl status dockeractive (running)inactive/failed 说明守护进程没起来
docker context ls星号在 default 或预期 context星号落在远程或旧 context 上说明指向错误
/var/run/docker.sock存在,属主 root:docker不存在多为服务未启动或处于 rootless 模式
DOCKER_HOST通常为空指向旧地址或失效的 tcp 地址会连不上
桌面端 Docker Desktop 未启动时同样报这句话,先看托盘图标是否 Running,再去排查容器内的 Linux 服务。
rootless 模式的套接字在 /run/user/<uid>/docker.sock,只按 /var/run/docker.sock 排查会得出「服务不存在」的错误结论。
同一台机器上并存发行版安装的引擎与桌面版或其他替代实现时,可能同时存在多个套接字,先确认命令实际连的是哪一个:把 which docker 与 docker context ls 的结果一起看。

易错点

  • 在 shell 配置里改过 DOCKER_HOST 却忘了,远程排障时反复重启本机守护进程也不会生效
  • 把套接字不存在当成权限问题:路径缺失属于服务或运行模式问题,改套接字权限没有任何作用
  • 用 sudo docker 验证「已经修好」:root 可能走的是另一条套接字或有权限,换个普通用户立刻复现
  • 只看 status 不读日志:守护进程反复重启失败时,journalctl -u docker 里第一行错误通常直接指出配置原因

数据来源与参考

  • Docker 官方文档:Troubleshoot the Docker daemon(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌