修改docker默认存储路径和配置镜像加速器需先停服务、再改daemon.json(用data-root而非已弃用的graph)、最后重启验证;二者可合并配置,但须确保json格式正确、目标目录权限充足且空间足够。

修改 Docker 默认存储路径和配置镜像加速器是两个独立但常被一起处理的操作:前者解决磁盘空间不足问题,后者提升镜像拉取速度。关键在于先停服务、再改配置、最后验证,顺序不能乱。
修改 Docker 默认存储路径(推荐用 data-root)
新版 Docker 已弃用 graph 参数,统一使用 data-root 指定根目录。操作前请确保目标分区有足够空间,并已备份重要容器与镜像。
- 停止 Docker 服务:
sudo systemctl stop docker - 创建新目录(例如挂载在大容量磁盘上的
/mnt/docker-data):sudo mkdir -p /mnt/docker-data - 设置正确权限(Docker 进程需可读写):
sudo chown -R root:root /mnt/docker-data(多数系统默认用 root 运行 dockerd) - 编辑或新建配置文件:
sudo nano /etc/docker/daemon.json,填入:
{"data-root": "/mnt/docker-data"} - 启动服务并确认生效:
sudo systemctl start docker && docker info | grep "Docker Root Dir",输出应显示新路径
迁移已有数据(可选但建议)
如果原 /var/lib/docker 中已有镜像、容器或卷,直接改 data-root 后它们将不可见。如需保留,须手动迁移:
- 确保 Docker 已停止
- 用
rsync安全复制(保留权限与硬链接):sudo rsync -aP /var/lib/docker/ /mnt/docker-data/ - 复制完成后,可清空原目录(谨慎!先验证新路径运行正常):
sudo rm -rf /var/lib/docker
配置国内镜像加速器(提升 pull 速度)
加速器不改变存储位置,只替换镜像源地址。配置后所有 docker pull 请求会优先走国内节点。
- 编辑同一配置文件:
sudo nano /etc/docker/daemon.json - 合并写入(注意 JSON 格式,逗号分隔):
{"data-root": "/mnt/docker-data", "registry-mirrors": ["https://.mirror.aliyuncs.com"]}
(把<your-id></your-id>替换为阿里云容器镜像服务控制台生成的实际 ID;也可添加多个,如网易:"https://hub-mirror.c.163.com") - 重启生效:
sudo systemctl restart docker - 验证是否加载成功:
docker info | grep -A 1 "Registry Mirrors"
常见问题提醒
软链接方式(ln -s /new/path /var/lib/docker)虽能绕过配置修改,但易与 systemd 启动参数冲突,且不被 Docker 官方推荐用于生产环境。若用此法,请确保 /var/lib/docker 原目录已完全清空,且符号链接权限无误。另外,daemon.json 中不要混用 data-root 和旧版 graph,否则 dockerd 启动失败。











