视觉算法环境 Docker 镜像拉取失败排查

一、问题现象

这次复现一个智能驾驶视觉算法环境,第一步不是跑模型,而是拉容器:

bash 复制代码
docker compose pull

结果 perception-apiros-bag-runnermetrics 都停在 Pulling,最后出现:

text 复制代码
context deadline exceeded

这时业务代码还没执行,摄像头数据也没进入管线。问题发生在镜像拉取阶段。

二、环境里有哪些镜像

视觉算法环境不是一个镜像,通常会拆成几类:

服务 作用 排查重点
CUDA runtime GPU 运行环境 CUDA 版本是否固定
PyTorch 模型推理/评测 是否匹配 CUDA
ROS2 数据回放/消息通信 镜像是否能稳定拉取
OpenCV/FFmpeg 视频处理 基础镜像体积较大
Prometheus 指标采集 Quay 类镜像
pause/CoreDNS K8s 基础组件 新节点是否有缓存

如果只处理 Docker Hub,NVIDIA、Quay、K8s 组件仍然可能在部署时卡住。

三、按来源逐条验证

先不要改算法代码,先验证镜像来源:

bash 复制代码
docker pull docker.1ms.run/osrf/ros:humble-desktop
docker pull docker.1ms.run/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
docker pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
docker pull quay.1ms.run/prometheus/prometheus:v2.54.1
docker pull k8s.1ms.run/pause:3.9

如果某一类镜像拉取失败,先处理对应来源,不要直接排查模型逻辑。

四、compose 配置示例

毫秒镜像(1ms.run)适合处理这种多源镜像入口统一问题。示例:

yaml 复制代码
services:
  ros-bag-runner:
    image: docker.1ms.run/osrf/ros:humble-desktop
    volumes:
      - ./bags:/data/bags

  infer-worker:
    image: docker.1ms.run/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: ["gpu"]

  cuda-check:
    image: nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
    command: ["nvidia-smi"]

  metrics:
    image: quay.1ms.run/prometheus/prometheus:v2.54.1

执行:

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

五、K8s 节点预拉

如果环境要上 Kubernetes,新节点建议先预拉:

bash 复制代码
crictl pull k8s.1ms.run/pause:3.9
crictl pull k8s.1ms.run/coredns/coredns:v1.10.1
crictl pull nvcr.1ms.run/nvidia/cuda:12.4.1-runtime-ubuntu22.04
crictl pull quay.1ms.run/prometheus/prometheus:v2.54.1

如果这里失败,后面很可能看到:

text 复制代码
ImagePullBackOff

先解决节点镜像链路,再排查 Pod 配置。

六、排查顺序

建议顺序:

  1. 固定镜像 tag。
  2. 列出 compose / Helm 中所有镜像。
  3. 按 Docker Hub、NVIDIA、Quay、K8s 分组。
  4. 使用 docker.1ms.runnvcr.1ms.runquay.1ms.runk8s.1ms.run 做预检。
  5. docker compose pull 通过后再启动服务。
  6. K8s 新节点提前做 crictl pull
  7. 容器正常后再看 CUDA、显存、模型文件和数据路径。

七、总结

智能驾驶视觉算法环境部署时,镜像拉取失败会被误判成算法问题。

把多源镜像入口提前统一,能先排除 Docker Hub、NVIDIA、Quay、K8s 等来源带来的不确定性。毫秒镜像适合放在这个预检步骤里,先让容器环境稳定,再进入模型和业务排查。

相关推荐
Shockang5 小时前
AI 智能体安全沙盒实战
人工智能
yuhulkjv3356 小时前
Claude表格复制到word不再崩溃,AI导出鸭批量导出+格式无损一键搞定
人工智能·ai·c#·word·ai导出鸭
jerryinwuhan6 小时前
《系统部署与运维》开篇 课程介绍
运维
张忠琳7 小时前
【k3s】AutoK3s v0.9.3 Part 1 入口与 CLI 命令模块 — 超深度逐行分析之三
云原生·容器·kubernetes·k3s·autok3s
大明者省7 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
抱抱宝7 小时前
Agent-study项目教程(03):手写 Mini-ReAct Agent(不依赖框架)
javascript·人工智能·gpt·react.js·prompt·agent
抱抱宝7 小时前
大模型应用开发教程08 | 构建完整 RAG 应用(Chroma/FAISS 实战)
人工智能·gpt·prompt·agent
美团技术团队8 小时前
KDD‘26 美团学术论文精选及KDD Cup‘26 DataAgents赛道冠军思路解读
人工智能
AKAMAI8 小时前
当AI模型超出存储增长时
人工智能·云计算
科技绘图8 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化