文章目录
- 前言【核心步骤皆为 大模型生成的方案】
- 总结步骤应该是:
- 详细步骤如下
- 1. **停止 Docker 服务**
- 2. **备份原数据(防止迁移失败)**
- 3. **迁移数据到新磁盘**
- 4. **修改 Docker 配置文件**
- 5. **重启 Docker 服务**
- 6. **验证容器和镜像**
- 7. **删除旧数据(确认迁移成功后)**
- ⚠️ **关键注意事项**
- 故障排查
- 当前普通用户使用docker时,指定镜像、容器安装位置【无法指定】
- **方法 1:修改 Docker 存储根目录(需 root 权限)**
- **方法 2:使用 `docker save` 导出镜像到指定目录**
- **方法 3:使用 Rootless Docker(无需 root 权限)**
- **方法 4:挂载目录到容器(临时方案)**
- **终极建议** -
- **输出示例(方法 2)**
- 📙 精选专栏
🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连
🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
前言【核心步骤皆为 大模型生成的方案】
Linux 服务器,docker 占用系统空间太大了,整体迁移到挂载的其他磁盘
总结步骤应该是:
- 停止Docker服务。
- 备份原数据。
- 复制数据到新位置。
- 配置Docker使用新路径。
- 重启Docker并验证。
- 清理旧数据。
详细步骤如下
你可以将 Docker 的默认存储目录(/var/lib/docker
)整体迁移到挂载的磁盘目录(如 /mnt/docker
),以下是 安全迁移的完整步骤,确保迁移后所有用户和容器正常运行:
1. 停止 Docker 服务
sudo systemctl stop docker
# 停止所有正在运行的容器(可选,但建议)
sudo docker stop $(sudo docker ps -q)
2. 备份原数据(防止迁移失败)
sudo cp -a /var/lib/docker /var/lib/docker.bak
3. 迁移数据到新磁盘
假设新挂载的目录为 /mnt/docker
:
# 复制数据(保留权限和属性)
sudo rsync -aXS /var/lib/docker/ /mnt/docker/
# 验证数据完整性
sudo diff -r /var/lib/docker /mnt/docker
4. 修改 Docker 配置文件
编辑 /etc/docker/daemon.json
,添加新存储路径:
{"data-root": "/mnt/docker"
}
如果文件不存在,直接创建它。
5. 重启 Docker 服务
sudo systemctl start docker
# 验证服务状态
sudo systemctl status docker
6. 验证容器和镜像
sudo docker images # 应显示原有镜像
sudo docker ps -a # 应显示原有容器
7. 删除旧数据(确认迁移成功后)
sudo rm -rf /var/lib/docker
⚠️ 关键注意事项
-
权限问题
- 确保新目录权限与原有一致(通常是
root:root
和0700
):sudo chmod 700 /mnt/docker sudo chown root:root /mnt/docker
- 如果使用 SELinux/AppArmor,可能需要调整安全上下文:
sudo restorecon -Rv /mnt/docker
- 确保新目录权限与原有一致(通常是
-
挂载磁盘配置
- 确保挂载的磁盘在系统启动时自动加载(编辑
/etc/fstab
),避免 Docker 因目录不可用而启动失败。
- 确保挂载的磁盘在系统启动时自动加载(编辑
-
兼容性
- 如果新磁盘是网络存储(如 NFS),需确认 Docker 支持该存储类型(建议使用本地磁盘或高性能云盘)。
-
存储驱动一致性
- 迁移后的存储驱动(如
overlay2
)需与原系统一致,可通过以下命令检查:sudo docker info | grep "Storage Driver"
- 迁移后的存储驱动(如
故障排查
-
Docker 启动失败
检查日志定位原因:journalctl -u docker.service --no-pager -n 100
-
容器/镜像丢失
从备份恢复数据:sudo mv /var/lib/docker.bak /var/lib/docker
通过以上步骤,Docker 将使用新磁盘作为存储目录,原有用户和容器均可正常访问,且不会丢失任何数据。
当前普通用户使用docker时,指定镜像、容器安装位置【无法指定】
在 Docker 的默认设计中,镜像的存储位置由 Docker 守护进程统一管理,普通用户无法直接通过 docker pull
命令指定单次下载的存储路径。但可以通过以下方法间接实现类似效果:
方法 1:修改 Docker 存储根目录(需 root 权限)
原理:通过修改 Docker 的全局配置,将镜像默认存储位置指向其他路径。
步骤:
# 1. 停止 Docker 服务
sudo systemctl stop docker# 2. 修改 Docker 配置文件
sudo vim /etc/docker/daemon.json
# 添加以下内容(假设新路径为 /new/path/docker)
{"data-root": "/new/path/docker"
}# 3. 移动原有数据(可选)
sudo mv /var/lib/docker /new/path/docker# 4. 重启 Docker
sudo systemctl start docker
缺点:
- 需要管理员权限
- 影响所有用户的 Docker 存储位置
方法 2:使用 docker save
导出镜像到指定目录
原理:先拉取镜像到默认位置,再导出为文件到自定义路径。
步骤:
# 1. 拉取镜像
docker pull ubuntu:latest# 2. 导出镜像到指定目录(如 ~/my-images)
docker save -o ~/my-images/ubuntu.tar ubuntu:latest
优点:
- 无需特殊权限
- 可精确控制镜像文件的存储位置
方法 3:使用 Rootless Docker(无需 root 权限)
原理:以非特权用户身份运行 Docker,镜像默认存储在用户目录下(~/.local/share/docker
)。
配置步骤:
# 1. 安装 rootless Docker
curl -fsSL https://get.docker.com/rootless | sh# 2. 设置环境变量
export PATH=/home/$USER/bin:$PATH
export DOCKER_HOST=unix:///run/user/$UID/docker.sock# 3. 拉取镜像(自动存储到用户目录)
docker pull ubuntu:latest
镜像存储路径:
~/.local/share/docker/overlay2
方法 4:挂载目录到容器(临时方案)
原理:通过挂载宿主机目录到容器,间接实现文件存储到指定位置。
示例:
# 拉取镜像时,将宿主机的 /custom/path 挂载到容器
docker run -v /custom/path:/data ubuntu:latest
适用场景:
- 主要用于容器运行时挂载数据卷,而非直接控制镜像存储位置。
终极建议 -
-
普通用户无 root 权限:
使用 方法 2(docker save
)或 方法 3(Rootless Docker)。- Rootless Docker 是官方推荐的安全方案,适合个人开发环境。
-
管理员权限可用:
使用 方法 1 全局修改存储路径,或通过软链接:# 该命令 慎用,相当于重新安装sudo rm -rf /var/lib/dockersudo ln -s /custom/path/docker /var/lib/docker
输出示例(方法 2)
$ docker pull ubuntu:latestlatest: Pulling from library/ubuntu
Digest: sha256:669eafb9...
Status: Downloaded newer image$ docker save -o ~/backup/ubuntu.tar ubuntu:latest$ ls -lh ~/backup/ubuntu.tar-rw------- 1 user user 72M Jun 10 15:30 ubuntu.tar
通过上述方法,普通用户可灵活控制镜像文件的最终存储位置。
📙 精选专栏
- 🍊 深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【基础安装—认真帮大家整理了】——【1024专刊】
计算机视觉领域 八大专栏、不少干货、有兴趣可了解一下
- ❤️ 图像风格转换 —— 代码环境搭建 实战教程【关注即可阅】!
- 💜 图像修复-代码环境搭建-知识总结 实战教程 【据说还行】
- 💙 超分重建-代码环境搭建-知识总结 解秘如何让白月光更清晰【脱单神器】
- 💛 YOLO专栏,只有实战,不讲道理 图像分类【建议收藏】!
-
🍊 深度学习:环境搭建,一文读懂
-
🍊 深度学习:趣学深度学习
-
🍊 落地部署应用:模型部署之转换-加速-封装
-
🍊 CV 和 语音数据集:数据集整理
-
🍊 点赞 👍 收藏 ⭐留言 📝 都是博主坚持写作、更新高质量博文的最大动力!