如何恢复Docker volumes默认创建路径 排查卷存储路径异常
Linux环境恢复Docker volumes默认存储路径操作方法
首先先确认当前Docker实际使用的根存储目录,执行以下命令查看:
docker info | grep "Docker Root Dir"
正常默认配置下输出应为 Docker Root Dir: /var/lib/docker,如果输出其他路径,说明确实修改过默认存储位置,按以下步骤恢复即可:
- 修正Docker配置文件
Docker持久化自定义存储路径最常见的配置位置是/etc/docker/daemon.json,执行命令查看配置内容:
cat /etc/docker/daemon.json
- 如果配置中存在
data-root(新版Docker参数)或graph(已废弃的旧版参数)字段,且字段值不是/var/lib/docker,直接删除该字段配置即可(Docker默认会使用/var/lib/docker作为根目录,无需显式声明),或直接将字段值修改为/var/lib/docker。 - 修改时注意保证JSON格式合法,不要残留多余逗号,最简合法配置参考如下:
{ "storage-driver": "overlay2" }
- 排查systemd服务启动参数
如果daemon.json里没有相关自定义配置,说明修改是加在Docker服务的启动参数里的,执行命令查看服务启动配置:
systemctl cat docker | grep ExecStart
如果输出的ExecStart启动行末尾带有--data-root=自定义路径或--graph=自定义路径参数,需要删除该自定义参数。不要直接修改/usr/lib/systemd/system/docker.service原文件,执行systemctl edit docker创建覆盖配置,移除自定义的路径参数即可。
- (可选)迁移原有数据
如果需要保留原自定义路径下的镜像、容器、卷数据,执行rsync命令将原有数据全量同步到默认路径:
rsync -avz 第一步查到的当前Docker根目录/ /var/lib/docker/
注意路径末尾的斜杠不要漏写,避免目录层级同步错误。如果不需要保留旧数据,可跳过此步,直接清空旧路径文件即可。
- 重载配置重启服务
依次执行以下命令重载系统配置、重启Docker服务:
systemctl daemon-reload systemctl restart docker
- 验证结果
- 再次执行
docker info | grep "Docker Root Dir",确认返回路径为/var/lib/docker - 执行
docker volume create test创建测试卷,进入/var/lib/docker/volumes/目录即可看到对应test卷的存储文件夹 - 执行
docker volume ls确认卷列表查询正常,即恢复完成
- 再次执行
注意:恢复前请确认
/var/lib/docker所在磁盘分区有足够剩余空间,否则Docker服务会因存储空间不足启动失败。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

