1. 问题现象深度解析
最近在麒麟操作系统(ARM64架构)上部署Docker时遇到一个典型问题:系统重启后,虽然systemctl status docker显示服务正常运行,但执行docker images和docker ps命令却返回空列表。这个现象特别容易发生在桌面版Linux系统上,尤其是当Docker数据目录存放在非系统盘时。
具体表现为三个典型特征:
- 服务状态检查正常(
active (running)) - 所有容器和镜像"消失"(实际数据未丢失)
- 只需手动执行
systemctl restart docker即可恢复正常
关键提示:这种现象与Docker的数据目录(默认为/var/lib/docker)访问时机直接相关。当底层存储设备未就绪时,Docker会启动一个"空壳"服务。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题排查全流程记录
2.1 初步诊断与配置检查
首先验证Docker基础配置:
bash复制# 查看Docker数据目录位置
docker info | grep "Docker Root Dir"
# 检查daemon.json配置
cat /etc/docker/daemon.json
常见误区排查:
- 确认没有误配置
graph或data-root指向错误路径 - 检查存储驱动是否匹配当前系统(ARM架构常用
overlay2) - 验证磁盘权限:
ls -ld /var/lib/docker
2.2 服务启动顺序优化尝试
在/etc/systemd/system/docker.service.d/wait-for-mount.conf中添加延迟:
ini复制[Service]
ExecStartPre=/bin/sleep 10
After=network.target local-fs.target remote-fs.target
测试方法:
bash复制systemctl daemon-reload
systemctl restart docker
reboot
2.3 存储挂载深度排查
关键诊断命令:
bash复制# 查看挂载时序(添加--all参数显示完整信息)
systemd-analyze
