1. 环境准备与基础配置
在CentOS 7.9系统上部署MaxKB和Ollama之前,需要确保基础环境符合运行要求。我建议使用最小化安装的CentOS 7.9系统,这样可以减少不必要的软件冲突和资源占用。
1.1 系统更新与依赖安装
首先执行系统更新和基础工具安装:
bash复制yum update -y && yum install -y yum-utils device-mapper-persistent-data lvm2
注意:在生产环境中,建议先检查可用更新并评估影响后再执行更新操作。我曾遇到过因内核自动更新导致Docker服务异常的情况。
1.2 Docker环境部署
CentOS 7.9默认仓库中的Docker版本较旧,我们需要添加官方仓库:
bash复制yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE版本:
bash复制yum install -y docker-ce docker-ce-cli containerd.io
配置Docker开机自启并启动服务:
bash复制systemctl enable docker && systemctl start docker
验证安装:
bash复制docker --version
docker run hello-world
1.3 国内用户优化配置
对于国内用户,建议配置镜像加速器以提高拉取速度。创建或修改/etc/docker/daemon.json:
json复制{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
重载配置:
bash复制systemctl daemon-reload
systemctl restart docker
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Ollama容器化部署
Ollama作为本地大模型运行环境,其容器化部署需要特别注意资源分配和模型管理。
2.1 拉取Ollama镜像
使用官方镜像进行部署:
bash复制docker pull ollama/ollama
实测发现:直接拉取可能较慢,可以先通过
docker pull获取镜像层信息,然后使用docker save/docker load结合离线下载工具完成传输。
2.2 运行Ollama容器
创建持久化数据目录并运行容器:
bash复制mkdir -p /opt/ollama/data
docker run -d --name ollama -v /opt/ollama/data:/root/.ollama -p 11434:11434 ollama/ollama
关键参数说明:
-v /opt/ollama/data:/root/.ollama:将模型数据持久化到宿主机-p 11434:11434:暴露API端口
2.3 模型下载与管理
进入容器交互环境:
bash复制docker exec -it ollama ollama pull llama2
国内用户如果遇到下载慢的问题,可以采用以下方案:
- 使用代理服务器中转
- 通过离线方式下载模型后导入:
bash复制docker cp llama2-model.tar.gz ollama:/root/
docker exec -it ollama ollama create -f /root/llama2-model.tar.gz
3. MaxKB知识库系统安装
MaxKB作为知识库管理系统,需要与Ollama配合使用,以下是详细部署步骤。
3.1 数据库准备
MaxKB需要PostgreSQL支持,建议使用Docker部署:
bash复制docker run -d --name maxkb-pg \
-e POSTGRES_PASSWORD=maxkb@123 \
-e POSTGRES_USER=maxkb \
-e POSTGRES_DB=maxkb \
-v /opt/maxkb/pgdata:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:13
3.2 MaxKB主服务部署
拉取最新镜像并运行:
bash复制docker pull 1panel/maxkb
docker run -d --name maxkb \
--link maxkb-pg:postgres \
-e DB_HOST=postgres \
-e DB_PORT=5432 \
-e DB_NAME=maxkb \
-e DB_USER=maxkb \
-e DB_PASSWORD=maxkb@123 \
-p 8080:8080 \
1panel/maxkb
3.3 初始配置
访问http://服务器IP:8080完成初始化:
- 设置管理员账号
- 配置数据库连接(使用上述参数)
- 在系统设置中配置Ollama地址:
- API地址:
http://ollama:11434 - 模型名称:
llama2
- API地址:
4. 系统集成与优化
4.1 容器网络配置
建议创建专用网络提高安全性:
bash复制docker network create ai-net
docker network connect ai-net ollama
docker network connect ai-net maxkb
docker network connect ai-net maxkb-pg
4.2 资源限制与监控
为关键服务配置资源限制:
bash复制docker update --cpus 4 --memory 8g ollama
docker update --cpus 2 --memory 4g maxkb
安装cAdvisor监控容器资源使用:
bash复制docker run -d \
--name=cadvisor \
--network=ai-net \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-p 8081:8080 \
google/cadvisor
4.3 常见问题排查
问题1:Ollama模型下载中断
解决方案:
bash复制docker exec -it ollama ollama pull --insecure llama2
问题2:MaxKB连接数据库失败
检查日志:
bash复制docker logs maxkb
验证数据库连通性:
bash复制docker exec -it maxkb-pg psql -U maxkb -d maxkb
问题3:GPU加速未生效
首先确认NVIDIA驱动已安装,然后使用nvidia-docker运行:
bash复制docker run --gpus all -d --name ollama-gpu -v /opt/ollama/data:/root/.ollama -p 11434:11434 ollama/ollama
5. 生产环境建议
5.1 安全加固措施
- 修改默认端口:
bash复制docker run -d --name maxkb -p 18080:8080 [...其他参数]
- 配置HTTPS:
bash复制docker run -d --name nginx-proxy \
-p 443:443 -p 80:80 \
-v /path/to/certs:/etc/nginx/certs \
-v /etc/nginx/vhost.d \
-v /usr/share/nginx/html \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
jwilder/nginx-proxy
5.2 备份与恢复策略
Ollama模型备份:
bash复制docker exec ollama ollama list | awk '{print $1}' | xargs -I {} sh -c 'docker exec ollama ollama show --modelfile {} > /backup/{}.modelfile'
数据库备份:
bash复制docker exec maxkb-pg pg_dump -U maxkb -d maxkb > /backup/maxkb-$(date +%Y%m%d).sql
5.3 性能调优建议
- Ollama参数调整:
bash复制docker exec -it ollama ollama run llama2 --num_ctx 4096 --num_thread 8
- PostgreSQL配置优化:
bash复制docker exec -it maxkb-pg bash -c "echo 'shared_buffers = 1GB' >> /var/lib/postgresql/data/postgresql.conf"
docker restart maxkb-pg
我在实际部署中发现,当并发请求量较大时,需要调整Ollama的OLLAMA_MAX_LOADED_MODELS环境变量:
bash复制docker run -e OLLAMA_MAX_LOADED_MODELS=3 [...其他参数]
