🌐 语言: English | 中文 (Chinese)
本文档详细说明如何在 NVIDIA Jetson 设备上使用 Docker 部署 Industrial Security Demo。
- NVIDIA Jetson 设备(Orin NX / Orin Nano)
- JetPack 6.x(Ubuntu 22.04)
- Docker Engine 已安装(可使用
install-docker-jetson.sh脚本) - NVIDIA Container Runtime 已配置
cd Industrial-security-demo
docker build --network=host -t industrial-security-demo:latest .注意:使用
--network=host确保构建过程中能下载依赖。
docker compose up -d浏览器打开:http://<Jetson-IP>:8080
docker compose logs -f默认情况下,容器不挂载摄像头设备。如需使用 USB 摄像头,编辑 docker-compose.yml:
devices:
# 取消注释以下行
- /dev/video0:/dev/video0如果使用 RTSP 网络摄像头,无需修改设备映射,只需在 config/demo_config.json 中配置 RTSP URL:
{
"camera": {
"source": "rtsp://admin:@192.168.3.10/Streaming/Channels/101",
"use_gstreamer": true
}
}配置文件通过 volume 挂载到容器内,修改宿主机上的 config/demo_config.json 后重启容器即可生效:
docker compose restart容器通过 bind-mount 方式使用宿主机的 TensorRT/CUDA 库,无需在镜像内安装完整 CUDA Toolkit。
/usr/local/cuda- CUDA Toolkit/usr/lib/tensorrt- TensorRT 库/usr/lib/python3/dist-packages/tensorrt*- TensorRT Python 绑定/dev/nvidia*- NVIDIA GPU 设备
查看容器日志,应显示:
[TRT] Loading engine from /app/models/yolo26n_fp16.engine...
✅ YOLO TensorRT ready (e2e head, 640px)
如果显示 Using OpenCV DNN CPU fallback,说明 TensorRT 未正确加载。
bash scripts/docker-export.sh industrial-security-demo:latest ./industrial-security-demo.tar.gzgunzip -c industrial-security-demo.tar.gz | docker load症状:日志显示 TensorRT init failed, falling back to OpenCV DNN CPU
解决方案:
- 确认 JetPack 6.x 已正确安装
- 检查 TensorRT Python 绑定路径是否正确:
ls -la /usr/lib/python3/dist-packages/tensorrt* - 如果路径不同,修改
docker-compose.yml中的 volume 映射
症状:容器启动失败,提示 /dev/nvidia0: no such file or directory
解决方案:
- 确认 NVIDIA 驱动已加载:
ls -la /dev/nvidia* - 如果没有设备文件,加载内核模块:
sudo modprobe nvidia
症状:无法打开视频源
解决方案:
- 确认摄像头设备存在:
ls -la /dev/video* - 在
docker-compose.yml中取消注释对应的设备映射 - 如果是 RTSP 摄像头,检查网络连接
症状:Address already in use
解决方案:
- 检查端口占用:
ss -ltnp | grep 8080 - 修改
docker-compose.yml中的端口映射:ports: - "8081:8080" # 将容器 8080 映射到宿主机 8081
确保 config/demo_config.json 中:
{
"camera": {
"use_gstreamer": true
}
}如果帧率过高,可以增加推理间隔:
{
"detector": {
"infer_interval": 2 # 每 2 帧推理一次
}
}- 不要在生产环境暴露 Web 端口到公网
- 如需外部访问,配置防火墙:
sudo ufw allow from 192.168.1.0/24 to any port 8080
- 考虑添加反向代理和 HTTPS
此项目可以作为 SenseCraft Solution 平台的一个方案集成。参考 app_collaboration 项目中的 integrate-jetson-solution skill 自动生成方案配置。
- 在
solutions/目录下创建新方案 - 使用
docker_remote部署器类型 - 配置
docker-compose.yml作为部署文件 - 编写方案描述和部署指南
详细参考:app_collaboration/.claude/skills/integrate-jetson-solution/SKILL.md