jetson nano Docker化部署

2023-05-16

Docker安装

1.安装docker

https://docs.docker.com/engine/install/ubuntu/

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

 2.安装nvidia-container-runtime

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
echo $distribution
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
wget https://nvidia.github.io/nvidia-container-runtime/ubuntu14.04/amd64/./nvidia-container-runtime-hook_1.4.0-1_amd64.deb
sudo apt-get -y update
sudo apt-get install -y nvidia-container-toolkit
sudo apt-get install -y nvidia-container-runtime
sudo systemctl restart docker

Docker化部署

一、运行时检查及配置

1、检查 docker 配置是否为可用的运行时:

docker info | grep Runtime

 此处的结果不一致也没有关系,因为这里我已经配置好了,接着往下走

2、使用一个简单的运行时运行GPU容器,理想结果输出会是 Result=FAIL

docker run -it  jitteam/devicequery ./deviceQuery


 

 3、修改docker配置文件, 设置nvidia为默认运行时

vi /etc/docker/daemon.json

内容如下:

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

 4、重启docker

systemctl restart docker

 5、再次检查运行时:

docker info | grep Runtime

6、接下来我们指定一下运行时再次测试:

docker run -it --runtime nvidia jitteam/devicequery ./deviceQuery

二、创建自己的容器并配置环境

1、创建文件夹docker-test

mkdir docker-test
cd docker-test

 2、创建Dockerfile文件

vi Dockerfile

内容如下:

FROM arm64v8/ubuntu:16.04

#ENV LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu
ENV LD_LIBRARY=/usr/lib/aarch64-linux-gnu/tegra
#ENV CUDA_HOME=/usr/local/cuda-10.0:/usr/local/cuda-10.0/include:/usr/local/cuda-10.0/lib
RUN mkdir /cudaSamples
COPY deviceQuery /cudaSamples/

ENV LANG C.UTF-8
#ENV LIB_PATH=/lib/aarch64-linux-gnu/

RUN apt-get update -y && apt-get upgrade -y

RUN apt-get install -y tzdata && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

RUN apt-get -y install vim

#安装sqlite3
RUN apt-get install -y libsqlite3-dev
RUN apt-get -y install gcc

#解决ssl No module named _ssl
RUN apt-get install libssl-dev -y

RUN apt-get install make

RUN apt-get -y install zlib*

#安装wget
RUN apt-get -y install wget

#解决opencv 报错
#RUN apt-get install -y libgl1-mesa-glx

#RUN apt-get install -y libglib2.0-dev

#RUN wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
#解压tgz
#RUN tar -xvzf Python-3.6.5.tgz

#
#RUN cd Python-3.6.5
#RUN ./configure --with-ssl
#RUN make -4 && make install

#RUN ln -sf /usr/local/bin/python3 /usr/bin/python


#RUN python3 -m pip install --upgrade pip

3、 创建镜像

docker build -t nano_env_img .

 4、运行容器

在运行之前,我们需要知道以下几个路径:

  • /dev/nvhost-ctrl
  • /dev/nvhost-ctrl-gpu
  • /dev/nvhost-prof-gpu
  • /dev/nvmap
  • /dev/nvhost-gpu
  • /dev/nvhost-as-gpu

这些路径都是宿主机上的一些路径,这是容器运行需要访问的路径,我们可以通过 --device 指令添加。

还有一条比较重要,容器也需要访问驱动程序,路径如下:

/usr/lib/aarch64-linux-gnu/tegra

可以通过 -v 指令添加。

如果程序还需要其他的访问路径,例如环境变量,cuda库的位置等,都可以通过以上指令添加。

接下来正式启动容器:

docker run --device=/dev/nvhost-ctrl --device=/dev/nvhost-ctrl-gpu --device=/dev/nvhost-prof-gpu --device=/dev/nvmap --device=/dev/nvhost-gpu --device=/dev/nvhost-as-gpu -v /usr/lib/aarch64-linux-gnu/tegra:/usr/lib/aarch64-linux-gnu/tegra -it --name nano_test nano_env_img 

 然后你就可以在容器中配置你自己的环境,配置完以后可以将该容器保存为镜像,然后移植到其它jetson 设备上。

参考资料

K3S and Nvidia Jetson Nano  https://www.virtualthoughts.co.uk/2020/03/24/k3s-and-nvidia-jetson-nano/
使用文章中提到的jitteam/devicequery作为基像,程序可以运行了。

安装arm版cuda10.2:https://developer.nvidia.com/cuda-toolkit/arm
NVIDIA Container Runtime on Jetson:https://github.com/NVIDIA/nvidia-docker/wiki/NVIDIA-Container-Runtime-on-Jetson

参考资料:https://github.com/Technica-Corporation/Tegra-Docker

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jetson nano Docker化部署 的相关文章

随机推荐

  • 使用Python,Opencv检测AprilTag

    这篇博客将介绍AprilTags 这是一组基准标记 通常用于机器人技术 校准和3D计算机视觉项目 通常在执行实时检测时使用AprilTags 以及密切相关的ArUco标记 AprilTags是一种基准标记 更简单地说是 标记 基准点是在捕获
  • DIY 属于自己的OPENMV4, 附openmv4部分的原理图。

    很多小白想要用AD来DIYopenmv4 xff0c 拥有属于自己DIY的openmv4 但是却没有找到好的参考资料 xff0c 现总结如下所示 现在官方还在众筹 xff0c 官方的开源的资料 xff0c 也是在三月份GitHub才向大家公
  • 30道最新Linux内核大厂面试题(含答案)

    1 Linux 中主要有哪几种内核锁 xff1f Linux 的同步机制从 2 0 到 2 6 以来不断发展完善 从最初的原子操作 xff0c 到后来 的信号量 xff0c 从大内核锁到今天的自旋锁 这些同步机制的发展伴随 Linux 从单
  • 最新腾讯等大厂c/c++后端 linux开发常见面试题汇总

    计算机操作系统 xff08 Linux xff09 1 命令 xff1a netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 2 cpu 内存 硬盘 等等与系统性能调试相关的命
  • C++高性能大规模服务器开发实践

    本文摘录自腾讯高级工程师在 全球C 43 43 及系统软件技术大会 上的专题演讲 01Lego简介 首先介绍一下 CDN 非常早期的时候有一个大牛创建了一个公司叫阿卡曼 xff0c 他把服务器部署到全球各地 xff0c 然后把源站的内容缓存
  • 梯度、散度、旋度、拉普拉斯算子

    梯度 运算的对象是纯量 xff08 即标量 xff0c 只有大小 xff0c 没有方向 xff09 xff0c 运算出来的结果是向量 xff08 矢量 xff0c 既有大小 xff0c 又有方向 xff09 定义 xff1a 函数在某点的梯
  • 【VINS-Fusion-gpu在NX的部署】

    VINS Fusion gpu在NX的部署 1 移除nx中已经默认的opencv sudo apt span class token operator span get purge libopencv span class token op
  • 电机扭矩计算

    转自 xff1a http blog sina com cn s blog 521a53b001011xdl html 扭矩的定义 xff1a 垂直方向的力 到旋转中心的距离 1 电动机有一个共同的公式 xff1a P 61 M N 955
  • px4ctrl代码-fsm.process()

    主进程 初始状态为MANUAL CTRL Finite State Machine 控制系统启动 v gt 手动控制 lt gt 自动起飞
  • px4ctrl代码解读-calculateControl()

    compute u thrust and u q controller gains and other parameters are in param quadrotor msgs Px4ctrlDebug LinearControl ca
  • linux系统启动过程(面试热点)

    linux系统启动过程 启动过程总览1 内核的引导2 运行init3 系统初始化4 建立终端5 用户登录系统6 进入login shell 启动过程总览 1 内核的引导 当计算机打开电源后 xff0c 首先是BIOS开机自检 xff0c 按
  • ZYNQ图像处理(4)——灰度图像转二值化图像

    1 二值化图像简介 前面已经完成了摄像头图像的采集和显示 xff0c 以及RGB图像转灰度图 二值化图像在图像处理领域同样有广泛的应用 xff0c 本节介绍如何用FPGA实现灰度转二值化图形 灰度实现二值化的原理很简单 xff0c 只需要设
  • Axios和Ajax处理后台返回文件流实现文件下载(图片和Excel)

    Axios 定义公共方法 xff0c 下载Excel download url data fileName return axios method 39 post 39 url headers里面设置token headers 34 tok
  • c++每日十题10.18

    1 将两个字符串连接起来组成一个字符串时 xff0c 选用 xff08 xff09 函数 正确答案 C 你的答案 C 正确 A strlen B strcap C strcat D strcmp strlen 测字符串长度 strcap复制
  • 人脸识别算法原理过程详解

    本文为转载内容 xff0c 由于找不到源作者链接 xff0c 故特此说明 人脸识别各算法详解 最近 xff0c 由于工作需要 xff0c 为了找到一款高效的人脸识别算法 xff0c 对各种人脸识别算法都研究了一番 xff0c 以下记录的是各
  • ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly

    Note When installing in a non Anaconda environment make sure to install the Protobuf compiler before running the pip ins
  • Jetson Nano 关闭开启图形界面减少内存占用

    如果希望一直保持桌面关闭 xff0c 则可以使用下述命令 xff0c 然后 xff0c 重新启动后 xff0c 桌面将保持禁用或启用状态 xff1a ubuntu关闭图形用户界面 sudo systemctl set default mul
  • python程序docker化部署

    启动docker systemctl start docker 启动docker systemctl enable docker 设置开机自启动docker systemctl status docker 查看docker状态 步骤 xff
  • 嵌入式(一)——MPU9250九轴学习

    加速度计对四轴或小车的加速度比较敏感 xff0c 取瞬时值计算倾角误差比较大 xff1b 而陀螺仪积分得到的角度不受小车加速的的影响 xff0c 但是随着时间的增加积分漂移和温度漂移带来的误差比较大 xff0c 所以这两个传感器正好可以弥补
  • jetson nano Docker化部署

    Docker安装 1 安装docker https docs docker com engine install ubuntu sudo apt get update sudo apt get install apt transport h