跳到主要内容

Docker


本指南将完整演示如何在 NVIDIA Jetson Orin 系列设备上安装并配置 Docker 和 NVIDIA Container Runtime。这是运行基于 GPU 加速的容器(如 Ollama、n8n、ROS 等 AI 推理应用)的关键步骤。


1. 概览

  • 安装 Docker CE 支持容器化应用
  • 配置 NVIDIA 运行时以启用 GPU 加速
  • 设置非 sudo 模式运行 Docker
  • 配置持久默认运行时为 NVIDIA

本指南涵盖:

  • Docker 安装
  • NVIDIA 运行时配置
  • 运行时测试
  • 常见问题排查

2. 系统要求

组件要求
Jetson 硬件Orin Nano / NX / AGX
操作系统Ubuntu 20.04 或 22.04(基于 JetPack)
Docker 版本建议 Docker CE ≥ 20.10
NVIDIA 运行时nvidia-container-toolkit
CUDA 驱动已包含在 JetPack(需 JetPack ≥ 5.1.1)

3. 安装 Docker CE

从 Ubuntu 官方源安装 Docker:

sudo apt-get update
sudo apt-get install -y docker.io

⚠️ 如需安装最新版本,也可以使用 Docker 官方 APT 源。

检查 Docker 是否安装成功:

docker --version
# 示例输出:Docker version 20.10.17, build 100c701

4. 非 sudo 模式运行 Docker(可选)

若希望以普通用户身份运行 Docker 命令:

sudo groupadd docker         # 创建 docker 用户组(若已存在可跳过)
sudo usermod -aG docker $USER
sudo systemctl restart docker

🔁 重启系统或重新登录使变更生效:

newgrp docker

5. 安装 NVIDIA 容器运行时

安装容器运行时以便容器访问 Jetson GPU:

sudo apt-get install -y nvidia-container-toolkit

6. 配置 NVIDIA Docker 运行时

A. 注册 NVIDIA 为 Docker 运行时

运行以下配置命令:

sudo nvidia-ctk runtime configure --runtime=docker

确保 NVIDIA 被注册为有效容器运行时。


B. 设置 NVIDIA 为默认运行时

编辑 Docker 守护进程配置文件:

sudo nano /etc/docker/daemon.json

粘贴或确认以下 JSON 内容存在:

{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}

保存并退出编辑器。


C. 重启 Docker 服务

应用配置更改:

sudo systemctl restart docker

验证 Docker 是否启用了 NVIDIA 运行时:

docker info | grep -i runtime

输出示例应包含:

 Runtimes: io.containerd.runc.v2 nvidia runc
Default Runtime: nvidia

D. 登陆nvcr.io

获取 NGC_API_KEY

  • Generate API Key NCG_API_KEY
  • Generate Personal Key Generate_personal_key
  • docker login
    sudo docker login nvcr.io
    #用户固定:$oauthtoken
    Username: "$oauthtoken"
    #密码token
    Password: "YOUR_NGC_API_KEY"

7. 测试容器中 GPU 访问

运行官方 CUDA 容器测试 GPU 可用性:

docker run --rm --runtime=nvidia nvcr.io/nvidia/l4t-base:r36.2.0 nvidia-smi

期望输出:

  • 显示 CUDA 版本与 Jetson GPU 信息
  • 确认容器已成功访问 GPU

docker_nvidia-smi

你也可以使用社区维护的 jetson-containers,快速搭建你的开发环境(推荐)

MLpytorch tensorflow jax onnxruntime deepstream holoscan CTranslate2 JupyterLab
LLMSGLang vLLM MLC AWQ transformers text-generation-webui ollama llama.cpp llama-factory exllama AutoGPTQ FlashAttention DeepSpeed bitsandbytes xformers
VLMllava llama-vision VILA LITA NanoLLM ShapeLLM Prismatic xtuner
VITNanoOWL NanoSAM Segment Anything (SAM) Track Anything (TAM) clip_trt
RAGllama-index langchain jetson-copilot NanoDB FAISS RAFT
L4Tl4t-pytorch l4t-tensorflow l4t-ml l4t-diffusion l4t-text-generation
CUDAcupy cuda-python pycuda cv-cuda opencv:cuda numba
RoboticsCosmos Genesis ROS LeRobot OpenVLA 3D Diffusion Policy Crossformer MimicGen OpenDroneMap ZED
Graphicsstable-diffusion-webui comfyui nerfstudio meshlab pixsfm gsplat
Mambamamba mambavision cobra dimba videomambasuite
Speechwhisper whisper_trt piper riva audiocraft voicecraft xtts
Home/IoThomeassistant-core wyoming-whisper wyoming-openwakeword wyoming-piper

8. 使用技巧与故障排查

问题解决方法
找不到 nvidia-smiJetson 使用 tegrastats 替代
容器中无 GPU确保默认运行时设置为 nvidia
权限错误检查用户是否加入了 docker 用户组
容器崩溃查看日志:journalctl -u docker.service

9. 附录

关键文件路径

文件用途
/etc/docker/daemon.jsonDocker 运行时配置
/usr/bin/nvidia-container-runtimeNVIDIA 运行时二进制路径
~/.docker/config.jsonDocker 用户配置(可选)

参考链接