最标准推荐方式是直接修改 daemon.json 中的 "data-root" 字段。linux 下需停服、迁移数据、编辑 /etc/docker/daemon.json;windows 下在 %userprofile%.dockerdaemon.json 配置,路径用双反斜杠或正斜杠。
直接改 daemon.json 是修改 docker 默认数据目录最标准、最推荐的方式。核心就是设置 "data-root" 字段,指向你想要的新路径。
确认当前默认路径
先看看现在 Docker 用的是哪条路:
docker info | grep "Docker Root Dir"
通常输出是 /var/lib/docker(Linux)或 C:Users[用户名].docker 下的某个子目录(Windows)。
Linux 系统下操作步骤
1. 停止 Docker 服务
所有容器会中断,务必提前保存或备份重要状态:
sudo systemctl stop docker
2. 创建新目录并迁移数据(可选但强烈建议)
比如想把数据移到 /data/docker:
sudo mkdir -p /data/docker sudo rsync -aP /var/lib/docker/ /data/docker/
用 rsync 而不是 mv,保留原目录作为临时备份,验证成功后再删。
sudo nano /etc/docker/daemon.json
内容写成标准 JSON 格式,仅含 data-root:
{
"data-root": "/data/docker"
}
⚠️ 注意:
- 文件必须是合法 JSON(不能有多余逗号、注释、单引号)
- 如果已有其他配置(如镜像源、日志驱动),合并进去,不要覆盖
4. 启动并验证
sudo systemctl start docker docker info | grep "Docker Root Dir"
看到输出变成 /data/docker 就说明生效了。
5. 清理旧目录(确认无误后)
sudo rm -rf /var/lib/docker
Windows 11(Docker Desktop)下操作
1. 关闭 Docker Desktop
右下角托盘图标 → 右键 → Quit Docker Desktop。
2. 找到或创建 daemon.json
路径是:
C:Users[你的用户名].dockerdaemon.json
如果不存在,就新建一个纯文本文件,命名为 daemon.json,编码用 UTF-8(无 BOM)。
3. 写入配置
例如存到 D:docker-data:
{
"data-root": "D:\docker-data"
}
注意:Windows 路径要用双反斜杠 \ 或正斜杠 /,不能用单反斜杠 。
4. 重启 Docker Desktop
双击启动即可,不用命令行。启动后运行:
docker info | findstr "Docker Root Dir"
确认路径已更新。
常见问题提醒
- 新目录需要有读写权限,Linux 下可加:
sudo chown -R root:root /data/docker
- 如果启动失败,检查
daemon.json是否格式错误(可用 JSONLint 验证) - 不要同时用软链接 +
data-root,容易冲突 -
data-root控制全部数据:镜像、容器、卷、网络、构建缓存等,不是只改镜像位置
不复杂但容易忽略细节。











