将LightRAG部署到服务器

服务器上容器通信问题

将两个容器放置在同一个网络中

# 创建自定义网络(如果尚未创建)
docker network create rag-network

# 将 Ollama 和 LightRAG 容器连接到同一网络
docker network connect rag-network ollama-container-name
docker network connect rag-network lightrag-container-name

获取ollama的ip地址

# 获取 Ollama 容器的 IP 地址
OLLAMA_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 3577eccba13c)
echo $OLLAMA_IP

测试连接

# 进入LightRAG容器内部,测试连接效果
# 在容器内安装 curl
apt-get update && apt-get install -y curl

# 然后重新运行您的 curl 命令:
curl http://OLLAMA_IP:11434/api/embeddings -X POST \
  -H "Content-Type: application/json" \
  -d '{"model":"bge-m3:latest","prompt":"你好"}'

将LightRAG配置文件中的ollama地址改为ip地址

1

查看LightRAG容器的日志输出

# 实时查看日志输出(持续跟踪)
docker logs -f LightRAG_container-id

# 查看最近 100 行日志
docker logs --tail 100 LightRAG_container-id

# 查看特定时间后的日志
docker logs --since 10m LightRAG_container-id  # 过去10分钟

ollama容器停止后模型消失

# 挂载持久化存储目录
docker run -d -v ollama-models:/root/.ollama  -p 11434:11434  ollama/ollama

# 验证模型存储路径
docker exec -it ollama ls /root/.ollama/models

# 重新启动容器
docker run -d -v ollama-models:/root/.ollama -p 11434:11434 ollama/ollama

数据挂载问题

image-20250717150841312

docker配置文件已经完成挂载

问题分析

1.unable to allocate CPU buffer

这个错误通常有以下几种原因:

  1. 系统内存不足(RAM 或 Swap)
  2. Docker 容器内存限制过低
  3. 模型太大无法加载
  4. 系统文件描述符限制
  5. Ollama 配置问题

增加交换缓存

# 创建 4GB 交换文件(根据需要调整大小)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

查看容器内存限制

# 查看 Ollama 容器内存限制
docker inspect LightRAG_id | grep -i memory

[root@iZ2vcffs4hmho1yesqg2kdZ ~]# docker inspect a284b9cdd7f8 | grep -i memory
            "Memory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
  1. "Memory": 0
  • 含义:容器未设置内存使用上限(单位:字节)。
  • 解释:值为 0 表示容器可以无限制地使用宿主机内存。
  1. "MemoryReservation": 0
  • 含义:容器未设置内存软限制(单位:字节)。
  • 解释:软限制是 Docker 在检测到宿主机内存不足时,尝试强制容器遵守的内存阈值。值为 0 表示未启用此功能。
  1. "MemorySwap": 0
  • 含义:容器未设置 Swap 交换空间上限(单位:字节)。
  • 解释
    • MemorySwap 表示 内存 + Swap 的总容量
    • 若同时设置 MemoryMemorySwap
      • MemorySwap = 1G + Memory = 500M → 容器可用内存 500M,Swap 500M。
    • 值为 0 表示未限制 Swap 使用(实际可用 Swap 受宿主机限制)。
    • Memory 有上限但 MemorySwap=-1 → 容器可使用无限 Swap(慎用)。
  1. "MemorySwappiness": null
  • 含义:使用宿主机默认的 Swappiness 配置
  • 解释
    • Swappiness 控制内核将内存页交换到磁盘的倾向(范围:0-100)。
      • 0:尽量禁用 Swap(除非内存耗尽)。
      • 100:积极使用 Swap。
    • null 表示继承宿主机设置(通常为 60)。

增加内存限制重新启动

# 重新运行 Ollama 容器,增加内存限制(至少 4GB)
docker run -d --name ollama -p 11434:11434 --memory=4g --memory-swap=8g ollama/ollama
posted @ 2025-07-14 16:11  狐狸胡兔  阅读(253)  评论(0)    收藏  举报