内网模型服务启动链路分层实践

5 月 6 日恢复一个内网模型演示环境时,我把问题拆成了七层,而不是只盯着 docker compose pull

场景是这样的:Ollama 提供模型服务,Open WebUI 做前端,Qdrant 做向量库,后续会迁移到 Kubernetes。执行:

bash 复制代码
docker compose up -d

一开始确实卡在镜像拉取,但后面又遇到 GPU runtime、模型目录、Web UI 连通和向量库健康检查问题。单独写"镜像加速"太窄,真实工程里更需要的是一套启动链路检查顺序。

1. 启动链路分层

我会先把环境拆成下面几层:

层级 目标 失败信号
镜像供应链 镜像能进入本机和节点缓存 context deadline exceeded
容器运行时 Docker/containerd 配置可用 本机能跑,节点不行
GPU runtime CUDA、驱动、device plugin 正常 nvidia-smi 不通
模型目录 volume/PVC/权限正确 找不到模型、反复下载
模型服务 Ollama/vLLM API 可访问 端口拒绝、模型列表为空
数据组件 Qdrant、Redis、PostgreSQL 健康 RAG 检索为空
访问入口 Ingress、反向代理、内网域名可用 502、鉴权失败

这张表能避免一个问题:把所有现象都归成"模型服务起不来"。

2. 镜像预检只做第一步

先按来源预检镜像:

bash 复制代码
docker pull docker.1ms.run/ollama/ollama:latest
docker pull ghcr.1ms.run/open-webui/open-webui:main
docker pull docker.1ms.run/qdrant/qdrant:latest
docker pull docker.1ms.run/redis:7-alpine
docker pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
docker pull k8s.1ms.run/pause:3.10

毫秒镜像(1ms.run)在这里的定位是多源镜像入口。它解决 Docker Hub、GHCR、NVIDIA、K8s 镜像进入部署环境的问题,但不替代模型服务、向量库和网关。

镜像预检通过以后,才继续往后看。

3. compose 启动配置

示例配置:

yaml 复制代码
services:
  ollama:
    image: docker.1ms.run/ollama/ollama:latest
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama

  webui:
    image: ghcr.1ms.run/open-webui/open-webui:main
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    depends_on:
      - ollama

  qdrant:
    image: docker.1ms.run/qdrant/qdrant:latest
    ports:
      - "6333:6333"
    volumes:
      - ./qdrant:/qdrant/storage

  redis:
    image: docker.1ms.run/redis:7-alpine

启动前先做配置检查:

bash 复制代码
docker compose config
docker compose pull
docker compose up -d
docker compose ps

4. 运行时和 GPU 检查

本机 Docker:

bash 复制代码
docker info
docker system df
df -h

K8s 节点 containerd:

bash 复制代码
crictl info
crictl pull docker.1ms.run/ollama/ollama:latest
crictl pull ghcr.1ms.run/open-webui/open-webui:main
crictl images | grep -E "ollama|open-webui"

GPU 最小验证:

bash 复制代码
docker run --rm --gpus all \
  nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04 \
  nvidia-smi

如果 GPU 层失败,优先查驱动、NVIDIA container runtime、device plugin 和 RuntimeClass,不要先调模型参数。

5. 服务和数据组件健康检查

模型服务:

bash 复制代码
curl http://127.0.0.1:11434/api/tags
docker compose logs --tail=80 ollama

Web UI:

bash 复制代码
docker compose logs --tail=80 webui

向量库:

bash 复制代码
curl http://127.0.0.1:6333/collections
docker compose logs --tail=80 qdrant

如果 Web UI 能打开但模型列表为空,优先查 OLLAMA_BASE_URL。如果知识库能上传但检索为空,继续看 Qdrant collection、embedding 服务和缓存组件。

6. 结论

内网模型服务启动失败时,不要把文章和排查都写成"镜像拉不下来"。

更合理的链路是:镜像供应链只是第一层,后面还有运行时、GPU、模型目录、模型 API、向量库和网关入口。毫秒镜像放在第一层自然出现,文章主体放在完整工程链路上,读者才会觉得这是一篇能照着排查的实践记录。


官网:1ms.run

开源工具:cnb.cool/mliev/1ms.r...

相关推荐
身如柳絮随风扬11 小时前
Docker 部署 MongoDB:从零搭建到生产环境配置详解
mongodb·docker·容器
亚空间仓鼠12 小时前
Docker容器化高可用架构部署方案(十五)
android·redis·docker·架构·sentinel
JP-Destiny13 小时前
linux-安装Ubuntu的docker
linux·ubuntu·docker
Kingairy14 小时前
Docker环境安装
运维·docker·容器
木雷坞15 小时前
Immich Docker Compose 升级后相册索引卡住排查:GHCR 镜像、数据库和存储权限
人工智能·docker·immich
AI服务老曹17 小时前
深度解析企业级高并发视频云架构:基于 Docker 与 GB28181/RTSP 协议栈的边缘计算平台(附源码交付实践)
docker·架构·音视频
斯普润布特17 小时前
StreamX(StreamPark 2.1.7) 更改人大金仓KES数据存储-Docker 版
docker·flink·iot
Benszen18 小时前
docker架构
docker·容器·架构
蜀道山老天师18 小时前
Docker 三大核心组件详解:镜像、容器、仓库(附分层原理 + 示例)
运维·docker·容器
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ18 小时前
docker重新加载docer-compose.yml文件(nginx配置)
nginx·docker·eureka