以下是修改 Docker 镜像存储目录的完整方案,综合多个权威教程和最佳实践整理:
一、推荐方法:通过 daemon.json
修改(适用于 Docker 1.12+ 版本)
操作步骤
- 停止 Docker 服务
sudo systemctl stop docker
- 创建新存储目录
sudo mkdir -p /new/docker/path # 例如 /data/docker
- 迁移现有数据(可选)
sudo cp -rp /var/lib/docker/* /new/docker/path/
- 修改配置文件
sudo nano /etc/docker/daemon.json
添加或更新以下内容:{
"data-root": "/new/docker/path"
} - 重启并验证
sudo systemctl daemon-reload
sudo systemctl start docker
docker info | grep "Docker Root Dir" # 应显示新路径
二、替代方案:Systemd 服务参数调整(旧版本兼容)
操作步骤
- 编辑服务文件
sudo nano /usr/lib/systemd/system/docker.service
- 修改
ExecStart
参数
找到包含dockerd
的行,添加--data-root
参数:ExecStart=/usr/bin/dockerd --data-root=/new/docker/path
- 重载配置
sudo systemctl daemon-reload
sudo systemctl restart docker
三、临时方案:符号链接(快速但需谨慎)
操作步骤
- 迁移数据并创建链接
sudo systemctl stop docker
sudo mv /var/lib/docker /new/docker/path
sudo ln -s /new/docker/path /var/lib/docker - 验证链接有效性
ls -l /var/lib/docker # 应显示链接符号 → /new/docker/path
四、关键注意事项
- 数据迁移风险
- 建议优先复制(
cp -rp
)而非移动(mv
)原始数据,防止操作失败导致镜像丢失 - 检查新目录权限:确保属主为
root:root
,权限为755
- 建议优先复制(
- 版本适配性 方法适用版本系统限制
daemon.json
Docker 1.12+全平台通用Systemd 参数修改旧版本 DockerCentOS/Ubuntu符号链接全版本需关闭SELinux - 空间监控
docker system df -v # 查看新目录下镜像占用情况
五、常见问题排查
- 启动失败:检查
/etc/docker/daemon.json
语法(JSON 格式要求严格) - 权限错误:运行
sudo chown -R root:root /new/docker/path
- 路径未生效:确认是否遗漏
systemctl daemon-reload
步骤