AI毛毛的blog

迁移Docker Volume的本地目录

最近在折腾大模型,用docker直接拉起的ollama服务来运行它们。

由于经常需要下载比较大的LLM,导致ollama的docker volume占用空间迅速增加,而docker volume默认位置是/var/lib/docker/volumes/,位于根分区下。眼看着只有500G的盘要被占满了,只好考虑到给它迁移到更大的数据盘去。

以下是迁移volume的简要记录。

准备新的volume目录

为了保证数据拷贝速度,这里用了一块7TB的NVMe盘,格式化、挂载并新建一个目录用来存放迁移后的数据。

1
mkdir -p /data/rei/docker/volumes/ollama

挂载旧的volume目录

出于数据一致性的考虑,需要避免原有volume数据在拷贝时被修改,先停掉ollama容器。

1
docker stop ollama

然后拉起一个busybox容器挂载原有的volume,原有volume的名字是”ollama”。

docker run -d –name temp_container -v ollama:/volume_data busybox tail -f /dev/null

将volume拷贝到新目录

使用docker cp命令拷贝数据。

1
docker cp temp_container:/volume_data /data/rei/docker/volumes/ollama

数据量大的情况下,可能需要很久。拷贝完成后,查看数据是否存在。

1
ls /data/rei/docker/volumes/ollama/volume_data

用新的volume目录重新拉起服务

先删除临时使用的busybox容器与旧的ollama容器。

1
docker rm -f temp_container && docker rm -f ollama

拉起一个新的ollama容器,volume使用上文迁移后的目录。

1
docker run -d --gpus=all -v /data/rei/docker/volumes/ollama/volume_data/:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

一些清理工作

确认新的ollama容器可以正常工作后,清理掉旧的ollama容器释放硬盘空间。

1
docker volume rm ollama