1. 为什么需要修改Docker的默认存储位置
刚接触Docker的新手可能不知道,默认情况下Docker会把所有镜像、容器、卷和网络配置存储在/var/lib/docker目录下。这个设计在早期没什么问题,但随着使用深入,你会发现几个明显的痛点:
-
系统盘空间告急:特别是开发环境,频繁构建镜像和运行容器会快速消耗/var分区空间。我有次在本地调试时,一个不小心就让20GB的系统盘直接爆满,导致整个开发机卡死。
-
性能瓶颈:机械硬盘作为系统盘时,I/O性能会成为容器操作的明显瓶颈。把数据迁移到SSD或高速阵列能显著提升容器启动和构建速度。
-
数据管理需求:生产环境中,我们通常需要把Docker数据与系统盘隔离,便于单独备份、扩容或做RAID保护。
提示:在Linux系统中,可以通过
df -h命令查看当前磁盘分区使用情况,重点关注/var/lib/docker所在分区的剩余空间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 迁移前的准备工作
2.1 确认当前Docker数据目录
执行以下命令查看当前配置:
bash复制docker info | grep "Docker Root Dir"
典型输出为:
code复制 Docker Root Dir: /var/lib/docker
2.2 选择新的存储位置
新位置需要满足:
- 足够的磁盘空间(建议至少预留100GB)
- 较好的I/O性能(企业级SSD为佳)
- 稳定的挂载点(避免使用临时挂载)
常见选择:
- 单独的数据盘(如/data/docker)
- 高速NAS挂载点(需确保网络稳定)
- LVM卷(便于后期扩容)
2.3 备份现有Docker数据
即使后续操作不会删除原数据,备份仍是必须的:
bash复制sudo systemctl stop docker
sudo rsync -avz /var/lib/docker /path/to/backup/
3. 三种迁移方案详解
3.1 方案一:修改daemon.json(推荐)
这是官方推荐的标准做法:
- 创建目标目录并设置权限:
bash复制sudo mkdir -p /new/path/docker sudo chown root:root
