目录
- Docker 存储目录介绍
- 存储目录结构详解
- 迁移方法
- 注意事项与故障排查
1. Docker 存储目录介绍
在 Ubuntu 系统中,Docker 默认将其所有数据(包括镜像、容器等)存储在 /var/lib/docker
目录下。随着使用时间的增长,这个目录可能会占用大量空间。特别是其中的 overlay2
目录,它存储了所有的容器层和镜像层数据。
2. 存储目录结构详解
Docker 的 overlay2 存储驱动使用联合文件系统来管理镜像层和容器层。以下是主要目录结构:
/var/lib/docker/overlay2/
├── [容器层ID]
│ ├── diff/ # 容器的实际文件内容
│ ├── merged/ # 联合挂载点
│ ├── work/ # OverlayFS 工作目录
│ └── link # 短 ID 链接
├── [镜像层ID]
│ ├── diff/ # 镜像层内容
│ └── link # 短 ID 链接
└── l/ # 短 ID 符号链接存储
3. 使用 daemon.json 配置文件迁移
- 创建或编辑 Docker 守护进程配置文件:
sudo nano /etc/docker/daemon.json
- 添加或修改以下内容:
{
"data-root": "/path/to/your/docker/data"
}
- 执行迁移步骤:
# 停止 docker 服务
sudo systemctl stop docker
# 复制现有数据到新位置
sudo rsync -aP /var/lib/docker/ /path/to/your/docker/data/
# 备份原目录
sudo mv /var/lib/docker /var/lib/docker.old
# 启动 docker 服务
sudo systemctl start docker
# 验证更改
docker info | grep "Docker Root Dir"
# 确认无误后删除备份
sudo rm -rf /var/lib/docker.old
- 按照上述方法 3.1 中的步骤 3 执行迁移操作。
4. 注意事项与故障排查
4.1 迁移前检查清单
- 确保新目录有足够的存储空间
- 验证新存储位置的文件系统支持 overlay2
- 检查新目录的权限设置
- 备份重要的容器数据
- 选择合适的迁移时间,避免影响业务
4.2 常见问题排查
- 检查 Docker 服务状态:
sudo systemctl status docker
- 查看详细日志:
sudo journalctl -u docker
- 检查目录权限:
ls -la /path/to/your/docker/data
4.3 存储空间管理
定期运行以下命令清理 Docker 存储空间:
# 查看 Docker 磁盘使用情况
docker system df
# 清理未使用的对象(镜像、容器、网络)
docker system prune
# 同时清理未使用的数据卷
docker system prune --volumes
# 仅清理未使用的镜像
docker image prune
结语
Docker 存储目录的迁移是一项需要谨慎对待的操作。通过合理的规划和正确的操作步骤,我们可以安全地将 Docker 的数据迁移到更适合的位置。记住,在执行迁移操作之前,一定要做好充分的准备和备份工作。