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

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...

相关推荐
Tronlong创龙2 小时前
SBC-TL3588 单板机 / EPC-TL3588 工控机 Docker 开发手册(二)
docker·开发板·嵌入式开发·硬件开发·工业控制
AI服务老曹7 小时前
视觉算法模型管理完整流程:多版本上线、灰度发布与回滚的落地实践
人工智能·docker·音视频
飞翔沫沫情9 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes
辉的技术笔记9 小时前
拆解 Dify 的 Celery:15 个队列都在干什么
docker
算力百科小星12 小时前
GPU算力平台可靠性评估体系:五维二十五项指标的八家主流平台量化横评
gpu算力·gpu
潮起鲸落入海14 小时前
Kubernetes Metric Server, Quota and Limits
容器·kubernetes
梦想的颜色14 小时前
Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill
运维·容器·ai 工程化·沙盒隔离·docker 本地部署·claude code硬核实战·国内国产模型接入
渣渣盟15 小时前
Docker 运维常用命令手册(含扩容与实战)
运维·docker·容器
小尘要自信15 小时前
小米摄像头怎么接入RTSP?Go2RTC转流、EasyNVR录像与公网访问教程
人工智能·docker·开源
我叫张小白。16 小时前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构