解决系统盘爆满:Docker 数据迁移至数据盘的 5 步操作与验证 📅 2026/7/6 22:18:08 解决系统盘爆满Docker 数据迁移至数据盘的 5 步操作与验证当你在云服务器或个人开发机上频繁使用 Docker 时可能会突然发现系统盘空间告急。这通常是因为 Docker 默认将所有数据包括镜像、容器和卷存储在/var/lib/docker目录下而这个目录往往位于系统盘。本文将详细介绍如何安全地将 Docker 数据迁移到数据盘释放宝贵的系统盘空间。1. 问题诊断与准备在开始迁移之前我们需要先确认几个关键信息首先检查当前磁盘使用情况df -h这个命令会显示所有挂载点的磁盘使用情况。重点关注/和/var/lib/docker所在分区的剩余空间。接下来查看 Docker 当前的存储配置docker info | grep Docker Root Dir这会显示 Docker 当前使用的存储路径通常是/var/lib/docker。重要准备工作确保目标数据盘有足够空间建议至少是当前/var/lib/docker大小的 1.5 倍备份重要容器和数据安排维护窗口因为迁移过程需要停止 Docker 服务提示建议在低峰期进行此操作因为迁移期间所有容器将暂时不可用。2. 停止 Docker 服务在迁移数据之前必须先停止 Docker 服务及其相关组件sudo systemctl stop docker sudo systemctl stop docker.socket验证 Docker 是否已完全停止systemctl status docker你应该看到类似inactive (dead)的状态。3. 迁移 Docker 数据现在我们可以开始实际的数据迁移工作了。以下是详细步骤创建目标目录假设数据盘挂载在/datasudo mkdir -p /data/docker使用rsync复制数据比直接mv更安全sudo rsync -avz /var/lib/docker/ /data/docker/这个命令会保留所有文件属性和权限并且可以随时中断后继续。验证数据完整性sudo du -sh /var/lib/docker /data/docker两个目录的大小应该相近新目录可能略小因为排除了临时文件。4. 配置 Docker 使用新路径现在我们需要告诉 Docker 使用新的存储位置。这是通过修改/etc/docker/daemon.json实现的sudo nano /etc/docker/daemon.json如果文件不存在就新建一个。添加以下内容{ data-root: /data/docker }如果你已经有其他配置如镜像加速只需添加>{ registry-mirrors: [https://registry.docker-cn.com], data-root: /data/docker }保存文件后重新加载 systemd 配置sudo systemctl daemon-reload5. 重启 Docker 并验证现在可以重启 Docker 服务了sudo systemctl start docker检查 Docker 是否使用了新路径docker info | grep Docker Root Dir应该显示/data/docker。最后验证容器和镜像是否完好docker ps -a docker images如果一切正常你可以安全删除旧数据释放空间sudo rm -rf /var/lib/docker/*迁移后的优化建议完成迁移后这里有一些额外的优化建议定期清理设置定时任务清理无用镜像和容器日志管理在daemon.json中配置日志轮转监控设置监控新存储位置的空间使用情况# 示例在 daemon.json 中添加日志配置 { data-root: /data/docker, log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } }通过以上步骤你不仅解决了系统盘空间不足的问题还为未来的 Docker 使用建立了更合理的存储架构。在实际生产环境中这种迁移操作我已经执行过数十次关键是要确保每个步骤都验证无误特别是在停止服务和验证数据完整性环节。