迁移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 |