容器数据卷持久化存储大模型与网站数据实操

为什么数据卷是容器存储的刚需

刚接触 Docker 时,你可能会遇到一个常见问题:容器一删,里面的大模型权重文件或网站数据库全没了。
这是因为容器默认的存储层在重启或删除后就会丢失。容器数据卷持久化存储大模型与网站数据 就是解决这个痛点的标准方案。
数据卷(Volume)是 Docker 管理的共享存储,独立于容器生命周期,删除容器也不会影响数据。

准备条件:确认 Docker 环境

操作前请确保服务器已安装 Docker。
命令行输入 docker --version 能看到版本号。
如果还没安装,可以参考官方文档或使用一键安装脚本(如 curl -fsSL https://get.docker.com | bash)。

  • 检查 Docker 运行状态:sudo systemctl status dockerdocker info
  • 如果是在宝塔面板中,可以通过软件商店安装 Docker 管理器,然后使用终端操作。

创建并挂载数据卷:分两种场景操作

场景一:存储大模型文件(如 Ollama、Llama 2)

假设你要运行 Ollama 容器并提供本地大模型服务,模型文件通常下载到容器内的 /root/.ollama
为了持久化,我们先用命令创建一个独立数据卷:

docker volume create ollama_data

然后启动容器时挂载该卷:

docker run -d --name ollama -v ollama_data:/root/.ollama -p 11434:11434 ollama/ollama

解释:-v ollama_data:
/root/.ollama
表示将 ollama_data 卷挂载到容器的 /root/.ollama 目录,
容器写入的模型文件实际上保存在宿主机 Docker 管理的存储目录下(通常是 /var/lib/docker/volumes/ollama_data/_data)。

场景二:存储网站数据(WordPress + MySQL)

网站一般至少两个数据源:数据库和上传文件。
以 WordPress 为例,我们需要两个卷:

docker volume create wp_db
docker volume create wp_files

启动 MySQL 挂载数据库卷:

docker run -d --name db -v wp_db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourpass -e MYSQL_DATABASE=wordpress mysql:8

启动 WordPress 挂载文件卷:

docker run -d --name wp -v wp_files:/var/www/html --link db -p 8080:80 wordpress:6

完成后访问 http://你的IP:8080 即可安装网站。
注意文件卷挂载到容器内 WordPress 根目录,主题、插件、上传图片都会保留。

避坑指南:这四个问题最容易栽跟头

  1. 卷名冲突:创建卷时如果已存在同名卷会报错,用 docker volume ls 检查。
  2. 权限问题:大模型容器以非 root 用户运行,挂载卷后目录权限可能不足。可添加 chown 或在 docker run 时加上 --user 参数。
  3. Windows/Mac 路径:若在本地开发,Bind Mount 更直观,但生产环境推荐 Volume。切勿直接用宿主机路径挂载,容易因权限错误导致容器无法写入。
  4. 数据库初始化:第一次挂载空卷启动 MySQL,它会在挂载目录初始化数据库。如果卷已存在非空目录,可能会覆盖或者报错。建议首次用新卷。

验证持久化是否生效

测试方法很简单:

  • 删除容器:docker rm -f ollama(或 wp
  • 用同一卷启动一个新容器:docker run -d --name ollama2 -v ollama_data:/root/.ollama -p 11434:11434 ollama/ollama
  • 进入容器检查之前下载的模型文件是否还在:docker exec -it ollama2 ls /root/.ollama
  • 如果是 WordPress,重新启动后访问网站,帖子、图片应该都与删除前一致。

也可以直接查看宿主机上卷的实际内容(不推荐线上操作,但验证可行): sudo ls /var/lib/docker/volumes/ollama_data/_data

数据迁移与备份

数据卷可以轻松迁移到另一台服务器。
导出为 tar 包:

# 先创建临时容器并挂载卷,然后将卷内容打包
docker run --rm -v ollama_data:/data -v $(pwd):/backup busybox tar czf /backup/ollama_backup.tar.gz -C /data .

得到 ollama_backup.tar.gz 后复制到新服务器,再解压到新卷:

docker volume create new_ollama_data
docker run --rm -v new_ollama_data:/data -v $(pwd):/backup busybox tar xzf /backup/ollama_backup.tar.gz -C /data

网站数据同理,数据库卷备份时建议先停止 MySQL 容器,避免写入不完整。

写在最后

容器数据卷持久化存储大模型与网站数据是容器运维的基础技能,掌握后可以放心升级、迁移容器而不丢失数据。
如果你在操作中遇到卷无法挂载或权限报错,优先检查卷名是否正确以及容器内用户 ID。
推荐多看 docker volume inspectdocker logs 的输出,排错会快很多。

分享到:
上一篇
Docker镜像加速器拉取容器提速方案
下一篇
日志自动清理脚本防止磁盘占满宕机
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意