ServerBox Docker 管理面板报错或命令执行失败怎么排查
Docker 面板完全空白或连接错误
ServerBox Docker 面板打不开,提示「Docker 连接错误」或空白:
第一步:服务器上 Docker 正常吗
SSH 进入服务器手动执行:
docker version
docker ps
docker info
如果这些命令都报错,ServerBox 当然也读不到。
第二步:Docker 服务在运行吗
systemctl status docker
systemctl start docker # 如果没运行
systemctl enable docker # 设置开机自启
第三步:用户权限
ServerBox 连接的服务器用户(非 root)能不能跑 docker?
docker ps
# 如果报 "permission denied" 或 "Got permission denied while trying to connect to the Docker daemon socket"
# 需要把用户加到 docker 组:
usermod -aG docker <你的用户名>
# 然后让组权限生效:newgrp docker,或重新登录 ServerBox
第四步:Docker Socket
ls -l /var/run/docker.sock
# 正常应该是 srw-rw---- root:docker
# 如果 socket 不存在说明 Docker daemon 根本没启动
Docker 命令超时
ServerBox 执行 docker 命令后等了很久没反应:
- 容器太多:
docker ps -a会慢,特别是有几百上千个容器时 - 磁盘 IO 瓶颈:Docker 的数据目录在磁盘上,磁盘忙时读镜像/容器列表会慢
- 容器日志巨大:某个容器日志好几 GB,docker logs 会慢
- 解决:SSH 进去先清理一下
docker system prune -af,检查磁盘状态
容器管理按钮没反应
点 start/stop/restart 没反应或报错:
| 按钮 | 失败原因 | 排查 |
|---|---|---|
| 启动 | 容器依赖的网络/卷不存在 | docker logs <容器> 看详细错误 |
| 停止 | 容器僵死,ignore SIGTERM | 尝试强制停止(SIGKILL) |
| 删除 | 容器还在运行 | 先停止再删 |
| 进入终端 | 容器里没有 sh/bash | 确认镜像里有 shell |
| 查看日志 | daemon 读不到日志文件 | docker restart 重启 daemon 或容器 |
Docker 不在标准 Socket
有些自定义 Docker 配置把 Socket 改了路径(比如 rootless Docker、Podman):
- rootless Docker:Socket 在
~/.docker/run/docker.sock - Podman:Socket 在
run/podman/podman.sock
ServerBox 目前只认标准路径 /var/run/docker.sock,非标准路径的 Docker/Podman 可能读不到——这种情况可以手动在 SSH 终端里跑 docker/podman 命令。