Docker镜像默认存于/var/lib/docker,修改需调整Docker Root Dir而非仅镜像路径。推荐方式依次为:1. 修改daemon.json配置data-root;2. 创建软链接;3. 修改docker.service启动参数--data-root。

Docker 镜像默认存在 /var/lib/docker,改路径主要是为了腾出系统盘空间、提升 I/O 性能,或者适配多磁盘规划。核心是改 Docker 的 数据根目录(Docker Root Dir),不是单独改“镜像”路径——因为镜像、容器、卷、网络等都统一放在这个根目录下。
下面三种方式按推荐度排序,适用于主流 Linux 系统(如 Ubuntu、CentOS):
直接改 daemon.json(最规范、推荐)
这是 Docker 官方支持的方式,兼容 systemd 服务管理,配置清晰、可维护性强。
-
停止 Docker 服务
sudo systemctl stop docker
-
创建新目录(比如用
/data/docker)sudo mkdir -p /data/docker
-
(可选)迁移旧数据(保留原目录作备份)
sudo rsync -aqxP /var/lib/docker/ /data/docker/
-
编辑或新建
/etc/docker/daemon.json{ "data-root": "/data/docker" }⚠️ 如果文件已有其他配置(如 registry-mirrors),请合并 JSON,保持语法合法。
-
启动并验证
sudo systemctl start docker docker info | grep "Docker Root Dir"
输出应为:
Docker Root Dir: /data/docker -
(确认无误后)清理旧数据
Docker Image Puller下载使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
sudo rm -rf /var/lib/docker
软链接方式(简单快捷,适合快速切换)
不改配置,靠符号链接“欺骗” Docker 继续往 /var/lib/docker 写,实际落到新位置。
-
停止 Docker
sudo systemctl stop docker
-
移动原目录(保留原始结构)
sudo mv /var/lib/docker /data/docker
-
创建软链接
sudo ln -sf /data/docker /var/lib/docker
-
启动 Docker
sudo systemctl start docker
✅ 优点:无需修改配置,兼容性好;
❌ 缺点:略显“绕过”官方机制,升级或重装时可能被覆盖。
改 docker.service 启动参数(旧系统兼容用)
适用于较老版本 Docker 或无法使用 daemon.json 的场景(如某些 CentOS 7 默认没该文件)。
-
编辑服务文件
sudo systemctl edit --full docker
-
找到
ExecStart=行,在末尾添加--data-root=/data/docker
例如:ExecStart=/usr/bin/dockerd --data-root=/data/docker -H fd:// ...
-
重载并重启
sudo systemctl daemon-reload sudo systemctl restart docker
注意:--graph 参数已弃用(Docker 17.05+),务必用 --data-root;若看到旧教程写 --graph,请替换为 --data-root。
Windows 用户(Docker Desktop)需另走 WSL 迁移路径,本质是导出/注销/重导入 docker-desktop-data WSL 实例,和 Linux 方式不同,不在此展开。

















