---
description: 在 reComputer Jetson 上使用 Docker
title: 在 reComputer Jetson 上使用 Docker
keywords:
- Edge
- reComputer Application
image: https://files.seeedstudio.com/wiki/wiki-platform/S-tempor.png
slug: /cn/jetson-docker-getting-started
last_update:
date: 01/04/2023
author: w0x7ce
---
# 在 reComputer Jetson 上使用 Docker
> 这是对以下内容的转载 [博客](https://collabnix.com/getting-started-with-docker-on-seeed-studios-recomputer-powered-by-nvidia-jetson) 由 [阿杰特](https://collabnix.com/author/ajeetraina) 在 [collabnix.com](https://collabnix.com). 所有的荣誉归他所有。
上周,我有幸第一次接触到最新的Seeed Studio [reComputer J1020](https://www.seeedstudio.com/Jetson-10-1-H0-p-5335.html) 边缘AI设备。 reComputer J1020由Jetson Nano开发套件驱动。它是一款小型手掌大小的强大计算机,为嵌入式开发者带来了现代AI的力量。 这款售价259美元的小设备基于NVIDIA Jetson Nano系统模块构建,专为边缘AI应用而设计。 该设备允许您并行运行多个神经网络,用于图像分类、物体检测、分割和语音处理等应用。 凭借丰富的扩展模块、工业外设和热管理,reComputer J1020准备帮助您加速和扩展下一代AI产品,通过将流行的DNN模型和ML框架部署到边缘,并以高性能进行推理,完成实时分类、物体检测、姿态估计、语义分割和自然语言处理(NLP)等任务。
## reComputer J1020 有什么独特之处?
[Seeed Studio reComputer J1020](https://wiki.seeedstudio.com/reComputer_Jetson_Series_Introduction/#recomputer-j1020) 配备了您开始构建基于 AI 的应用程序所需的一切。 与 NVIDIA 提供的 Jetson Nano 开发套件相比,它不需要从头开始在 SD 卡上刷写操作系统。 它预装了 Ubuntu 操作系统,存储在 16 GB 的 eMMC 上。 reComputer 预装的 Jetpack 4.6 包括一个板级支持包(BSP)、Linux 操作系统、NVIDIA CUDA、cuDNN 和 TensorRT 软件库,用于深度学习、计算机视觉、GPU 计算、多媒体处理等。它支持整个 [Jetson 软件栈](https://developer.nvidia.com/embedded/develop/software) 和各种 [开发工具](https://wiki.seeedstudio.com/Jetson-AI-developer-tools) 用于 [构建快速且稳健的 AI 应用程序](https://wiki.seeedstudio.com/Jetson-AI-developer-tools) 由 Seeed Edge AI 合作伙伴提供。
## 一些显著特点包括
* 128 个 NVIDIA CUDA® 核心 – 提供 0.5 TFLOPs(FP16)以运行 AI 框架和模型,适用于图像分类、目标检测、分割和语音处理等应用。
* 配备Armv8处理器
* 配备NVIDIA Tegra X1(nvgpu)/集成
* 磁盘大小为16GB
* 4GB内存
* 64位操作系统类型
* Ubuntu 18.04.5
* Seeed Studio reComputer已经预装JetPack 4.6系统
* 您无需闪存SD卡,它已经预装操作系统
* 支持CUDA 10.2.300
* CUDA架构:5.3
* OpenCV版本:4.1.1
[了解更多关于reComputer的硬件布局](https://wiki.seeedstudio.com/reComputer_Jetson_Series_Hardware_Layout)
## reComputer的组件
它配备以下部件清单:
* NVIDIA Jetson Nano x1
* Seed参考载板 x1
* 被动铝散热器 x1
* 铝制外壳 x1
* 12V 电源适配器 x1
* 4个 USB 3.0 端口
* 2个 HDMI 端口
* MIPI-CSI 摄像头连接器
* 控制和 UART 接口
* 40 针扩展头(GPIO, I2C, 头)
* 260 针 SODIMM
* MicroUSB
* 千兆以太网端口
* LED 灯
## 硬件设置
要开始使用,您需要准备以下最少连接器:
* 电源线
* Wifi 模块 / 千兆以太网线
* 用于 WiFi 键盘和鼠标的 USB 接收器
* HDMI 连接到您的显示器
## 运行 CUDA deviceQuery
```sh
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
```
以下是结果:
```sh
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA Tegra X1"
CUDA Driver Version / Runtime Version 10.2 / 10.2
CUDA Capability Major/Minor version number: 5.3
Total amount of global memory: 3956 MBytes (4148273152 bytes)
( 1) Multiprocessors, (128) CUDA Cores/MP: 128 CUDA Cores
GPU Max Clock rate: 922 MHz (0.92 GHz)
Memory Clock rate: 13 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 262144 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 32768
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: Yes
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: No
Supports Cooperative Kernel Launch: No
Supports MultiDevice Co-op Kernel Launch: No
Device PCI Domain ID / Bus ID / location ID: 0 / 0 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.2, NumDevs = 1
Result = PASS
```
## 在 reComputer Jetson Nano 上运行 Docker
[Docker](https://www.docker.com) 是一套用于创建、共享和运行单个容器的软件开发工具。 它是一个容器化平台,将您的应用程序及其所有依赖项打包在一起,以 docker 容器的形式,确保您的应用程序在任何环境中都能无缝运行。 Docker 容器是一个标准化单元,可以即时创建以部署特定应用程序或环境。
今天开发任何类型的应用程序都很复杂。 这远不止是编写代码。 有多种编程语言、Web 框架、复杂的架构,以及在每个生命周期阶段工具之间的不连续接口,这些都造成了巨大的复杂性。 Docker 简化并加速了您的工作流程,同时为开发人员提供了在每个项目中选择工具、应用程序堆栈和部署环境的自由。 它使您能够将应用程序与基础设施分离,从而快速交付软件。
Docker 在 reComputer J1020 上得到官方支持,这是一个基于 Jetson Nano 的开发套件。该套件默认预装了最新版本的 Docker。 您可以通过运行以下命令来验证Docker的版本:
```sh
sudo docker version
Client: Docker Engine - Community
Cloud integration: v1.0.25
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:02:19 2022
OS/Arch: linux/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:00:46 2022
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
```
## 安装Docker Compose
reComputer Jetson没有预装Docker Compose。 您可以按照以下步骤在您的系统中安装Docker Compose:
```sh
export DOCKER_COMPOSE_VERSION=2.6.0
sudo apt-get install libhdf5-dev
sudo apt-get install libssl-dev
sudo pip3 install docker-compose=="${DOCKER_COMPOSE_VERSION}"
apt install python3
apt install python3-pip
pip install docker-compose
```
## 安装最新版本的CUDA工具包
```sh
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/sbsa/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-ubuntu1804-11-3-local_11.3.1-465.19.01-1_arm64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-3-local_11.3.1-465.19.01-1_arm64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
```
## 验证Docker运行时
```sh
docker info | grep runtime
Runtimes: nvidia runc io.containerd.runc.v2 io.containerd.runtime.v1.linuxs
```
## 运行您的第一个Python容器
让我们通过运行以下命令来测试一个简单的基于Arm的Python Docker镜像:
```sh
sudo docker run arm64v8/python:slim ls
```
## 使用JTOP Docker容器监控CPU、GPU和内存
在本节中,您将看到如何设置系统监控工具来监控CPU、RAM和GPU。我们将使用JTOP工具。 Jtop是一个在终端上运行的系统监控工具,可以实时查看和控制您的reComputer Jetson Nano套件的状态,包括CPU、RAM、GPU状态和频率。 您将看到如何将该工具容器化。让我们开始吧 -
首先,创建一个包含以下内容的Dockerfile:
```sh
FROM python:3-alpine
RUN apk update \
&& apk --no-cache add bash \
&& pip install jetson-stats \
&& rm -rf /var/cache/apk/*
```
第一行显示我们选择了python:3-alpine作为基础镜像。 第二行安装 jetson-stats 和依赖包
## 构建 JTOP Docker 镜像
使用 docker build CLI 来构建 Docker 镜像
```sh
docker build -t ajeetraina/jetson-stats-nano .
```
## 运行 JTOP Docker 容器
现在是通过传递 –gpus 参数并将其挂载到 jtop 套接字来运行 Docker 容器的时刻。
```sh
docker run --rm -it --gpus all -v /run/jtop.sock:/run/jtop.sock ajeetraina/jetson-stats-nano jtop
```
你将看到以下结果:
在我们下一个博客文章中,我们将看到如何在 Docker 容器中运行 OpenDatacam 实现车辆识别。敬请关注!
请查看以下应用示例和教程!
* [通过 Edge Impulse 进行行人检测](https://www.edgeimpulse.com/blog/recognizing-your-blind-spots-pedestrian-detection-system-with-nvidia-jetson-nano)
* [安全帽检测](https://www.seeedstudio.com/blog/2022/03/03/deploy-hard-hat-detection-for-enforcing-workplace-safety) 并构建自定义 PPE 检测
* [使用 alwaysAI 进行姿态估计](https://alwaysai.co/blog/using-pose-estimation-on-the-jetson-nano-with-alwaysai)
* [使用 NVIDIA Deepstream IoT 进行视觉异常检测](https://developer.nvidia.com/gtc/2020/video/s22675-vid)
* [零售店商品检测](https://www.seeedstudio.com/blog/2022/06/08/retail-store-items-detection-using-yolov5-roboflow-and-node-red)
* [野火检测](https://github.com/Seeed-Studio/node-red-contrib-ml)
* [动物检测](https://github.com/Seeed-Studio/node-red-contrib-ml)
关注 Ajeet:
* [推特](https://twitter.com/ajeetsraina)
* [领英](https://www.linkedin.com/in/ajeetsraina)
* [collabnix](https://collabnix.com/author/ajeetraina)
## 技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们的产品的体验尽可能顺畅。 我们提供多种沟通渠道,以满足不同的偏好和需求。