迁移/var/lib/docker目录后Docker启动失败,求技术解决方法
迁移Docker数据目录后启动失败求助
因磁盘空间不足,尝试迁移/var/lib/docker目录,按以下步骤操作后启动Docker失败:
- 停止Docker守护进程
service docker stop
- 创建/编辑
/etc/docker/daemon.json配置文件:
{ "data-root": "/path/to/new/docker/location", "storage-driver": "overlay2" }
- 修改
/lib/systemd/system/docker.service中的ExecStart行:
ExecStart=/usr/bin/dockerd --data-root /path/to/new/docker/location -H fd:// --containerd=/run/containerd/containerd.sock
曾尝试用-g替换--data-root,两种方式均无效。
- 复制Docker数据到新目录:
rsync -aP /var/lib/docker/ /path/to/new/docker/location
- 执行启动命令时出错:
service docker start
错误截图:
此前尝试过网上类似问题的解决方案均无效,特此求助。
解决方案
1. 修复新目录权限
Docker进程需要对新数据目录拥有完整权限,执行以下命令:
chown -R root:root /path/to/new/docker/location chmod -R 700 /path/to/new/docker/location
2. 清理冲突配置
同时在daemon.json和docker.service中配置data-root会导致冲突,二选一即可:
- 保留
daemon.json配置:恢复docker.service的默认ExecStart行:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock - 保留
docker.service配置:删除daemon.json中的data-root字段。
3. 重新加载systemd配置
修改docker.service后必须执行重载,否则修改不生效:
systemctl daemon-reload
4. 验证新目录路径
确认目标路径是存在的绝对路径,无拼写错误:
ls -ld /path/to/new/docker/location
5. 查看详细错误日志
通过journalctl获取更精准的错误信息,定位问题根源:
journalctl -u docker.service -xe
6. 重新启动Docker
完成上述操作后,重新启动服务:
service docker start
内容的提问来源于stack exchange,提问作者happy
相关产品推荐
相关产品推荐

