news 2026/2/22 19:23:24

HoRain云--[特殊字符] 大模型服务容器化部署全流程(Docker Compose 实战版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--[特殊字符] 大模型服务容器化部署全流程(Docker Compose 实战版)

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

🐳 大模型服务容器化部署全流程(Docker Compose 实战版)

🔧 一、环境准备(5分钟)

📁 二、项目结构(统一目录规划)

🌐 三、方案A:Ollama + Open WebUI(全平台友好)

docker-compose.ollama.yml

🚀 启动命令

⚡ 四、方案B:vLLM + Open WebUI(高性能GPU方案)

docker-compose.vllm.yml

📥 模型准备(宿主机执行)

🚀 启动命令

🔍 五、验证与访问

🛠️ 六、运维锦囊

常用命令

⚠️ 高频问题解决

💡 进阶建议


🐳 大模型服务容器化部署全流程(Docker Compose 实战版)

✅ 覆盖Ollama方案vLLM方案|含GPU配置|数据持久化|一键启停
📌 适用于 Linux(Ubuntu 22.04+)|Windows WSL2|macOS(Apple Silicon需调整)


🔧 一、环境准备(5分钟)

# 1. 安装 Docker + Docker Compose curl -fsSL https://get.docker.com | sh sudo systemctl enable --now docker sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # 2. 【仅vLLM方案】安装 NVIDIA Container Toolkit(GPU支持) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker # 3. 验证 docker --version # ≥ 24.0 docker-compose --version # ≥ 2.20 nvidia-smi # GPU方案必现驱动信息

📁 二、项目结构(统一目录规划)

llm-deploy/ ├── docker-compose.ollama.yml # 方案A配置 ├── docker-compose.vllm.yml # 方案B配置(需GPU) ├── .env # 环境变量(可选) ├── models/ # 模型存储(vLLM用) │ └── qwen-7b-chat/ # HF格式模型(提前下载) └── data/ # 持久化数据 ├── ollama/ # Ollama模型缓存 └── openwebui/ # WebUI数据库/配置

🌐 三、方案A:Ollama + Open WebUI(全平台友好)

docker-compose.ollama.yml

version: '3.8' services: ollama: image: ollama/ollama:latest container_name: ollama ports: - "11434:11434" volumes: - ./data/ollama:/root/.ollama # 模型持久化 # GPU加速(可选):取消注释下方两行 # deploy: # resources: # reservations: # devices: # - driver: nvidia # count: all # capabilities: [gpu] restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:11434"] interval: 30s timeout: 10s retries: 3 open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui ports: - "3000:8080" volumes: - ./data/openwebui:/app/backend/data environment: - OLLAMA_BASE_URL=http://ollama:11434 # 容器内服务名通信 - WEBUI_AUTH=False # 关闭登录(生产环境建议开启) depends_on: ollama: condition: service_healthy restart: unless-stopped networks: default: name: llm-network

🚀 启动命令

cd llm-deploy docker-compose -f docker-compose.ollama.yml up -d docker-compose -f docker-compose.ollama.yml logs -f # 实时查看日志 # 首次拉取模型(进入Ollama容器执行) docker exec -it ollama ollama pull llama3:8b-instruct-q4_K_M

⚡ 四、方案B:vLLM + Open WebUI(高性能GPU方案)

docker-compose.vllm.yml

version: '3.8' services: vllm: image: vllm/vllm-openai:latest container_name: vllm runtime: nvidia # 关键:启用GPU ports: - "8000:8000" volumes: - ./models:/models # 挂载本地HF模型 command: > --model /models/qwen-7b-chat --port 8000 --tensor-parallel-size 1 --dtype auto --max-model-len 4096 environment: - NVIDIA_VISIBLE_DEVICES=all deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui ports: - "3000:8080" volumes: - ./data/openwebui:/app/backend/data environment: - OPENAI_API_BASE=http://vllm:8000/v1 - OPENAI_API_KEY=sk-vllm-key # vLLM无需验证,但WebUI需占位符 - WEBUI_AUTH=False depends_on: - vllm restart: unless-stopped networks: default: name: llm-network

📥 模型准备(宿主机执行)

# 安装huggingface-hub(宿主机) pip install huggingface-hub # 下载模型到 ./models/qwen-7b-chat huggingface-cli download Qwen/Qwen-7B-Chat --local-dir ./models/qwen-7b-chat --local-dir-use-symlinks False

🚀 启动命令

cd llm-deploy docker-compose -f docker-compose.vllm.yml up -d docker logs -f vllm # 观察模型加载进度(首次较慢)

🔍 五、验证与访问

项目地址验证方式
Open WebUIhttp://localhost:3000浏览器打开,自动加载模型列表
Ollama APIhttp://localhost:11434/api/tagscurl http://localhost:11434/api/tags
vLLM APIhttp://localhost:8000/v1/modelscurl http://localhost:8000/v1/models
健康检查docker-compose ps所有服务状态为 Up

成功标志:Open WebUI 界面中 → 设置 → 模型 → 可见可用模型列表


🛠️ 六、运维锦囊

常用命令

# 停止服务 docker-compose -f docker-compose.xxx.yml down # 重建服务(配置修改后) docker-compose -f docker-compose.xxx.yml up -d --force-recreate # 清理无用镜像/卷 docker system prune -a docker volume prune # 查看GPU使用 docker stats --no-stream # 观察vllm容器GPU内存

⚠️ 高频问题解决

问题解决方案
Open WebUI 找不到模型检查环境变量拼写(OLLAMA_BASE_URLvsOPENAI_API_BASE);确认容器网络互通(docker network inspect llm-network
vLLM 启动报 CUDA error确认nvidia-container-toolkit安装成功;执行docker run --rm --gpus all nvidia/cuda:12.2-base nvidia-smi验证
模型下载慢使用 HF 镜像:export HF_ENDPOINT=https://hf-mirror.com
端口冲突修改 yml 中 ports 的宿主机端口(如 3001:8080)
WSL2 无法访问Windows 防火墙放行端口;浏览器用http://<WSL_IP>:3000ip addr show eth0查IP)

💡 进阶建议

  1. 安全加固
    • 启用WEBUI_AUTH=True+ 设置账号密码
    • 用 Nginx 反向代理 + HTTPS(Let's Encrypt)
    • 限制 API 访问 IP(防火墙规则)
  2. 生产部署
    • 使用docker-compose.prod.yml+ Traefik 做负载均衡
    • 模型存储挂载 NAS/S3
    • 集成 Prometheus 监控 GPU/内存
  3. 混合后端
    在 Open WebUI 中为不同模型指定不同提供者(设置 → 模型 → 自定义提供者),实现 Ollama 小模型 + vLLM 大模型协同

现在执行

git clone https://github.com/your-repo/llm-deploy-template.git # 可选:使用模板仓库 cd llm-deploy && docker-compose -f docker-compose.ollama.yml up -d

5 分钟后,打开浏览器 →http://localhost:3000→ 开始对话!
遇到问题?提供docker-compose logs open-webui截图,我可精准诊断 🌟

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 12:41:00

Moto 家庭空间太实用!家人共享、安全守护,一部手机搞定家庭协同

如今全家都用智能手机&#xff0c;却总面临这些困扰&#xff1a;老人不会操作手机需要远程协助&#xff0c;孩子使用手机担心接触不良内容&#xff0c;家人之间分享照片、文件还要反复发微信&#xff0c;既麻烦又容易遗漏。而 Moto 系列手机内置的 “家庭空间” 功能&#xff0…

作者头像 李华
网站建设 2026/2/5 9:33:26

智慧果园苹果病虫害检测系统(YOLO + DeepSeek 双模型 Web 管理系统) YOLO+Deepseek双模型web管理系统 YOLOV8结合deepseek大模型

深度学习框架YOLODeepseek双模型web管理系统&#xff08;带数据集完整代码&#xff09; 核心 ✔️ 多种常见病害精准识别&#xff0c;支持图片/视频/摄像头检测&#xff0c;识别效率拉满&#xff0c;并接入deepseek模型给出个性化防治方案 ✔️ 带数据管理功能&#xff1a;检…

作者头像 李华
网站建设 2026/2/20 15:27:46

SEW变频器MDX61B0300-503-04-00 8279667

孙13665068812SEW变频器MDX61B0300-503-04-00 8279667 技术详解型号说明&#xff1a;MDX61B&#xff1a;系列代号&#xff08;模块化设计变频器&#xff09;0300&#xff1a;额定功率3kW503&#xff1a;输入电压3相400V04&#xff1a;输出电流7A00&#xff1a;标准版本8279667&…

作者头像 李华
网站建设 2026/2/16 9:27:01

C++多文件编译:告别“一锅炖”,让代码管理更优雅

C多文件编译&#xff1a;告别“一锅炖”&#xff0c;让代码管理更优雅 在编程世界中&#xff0c;好的组织方式能让代码维护变得轻松愉快。今天&#xff0c;我们来聊聊C中的多文件编译——这是大型项目管理的必备技能&#xff01; 为什么要拆分代码文件&#xff1f; 想象一下&am…

作者头像 李华