欢迎光临散文网 会员登陆 & 注册

ubuntu22.04萌新快速容器化部署deepstream指南

2022-11-29 11:31 作者:雪域小白鸠  | 我要投稿

本文档用于在已安装好Ubuntu22.04LTS的基础上

且显卡驱动已配置好的环境中开始教程

#注意,在参考之前的NVIDIA显卡驱动安装中,安装显卡驱动时后面不要加任何参数

#之前的教程后面加的例如-no-opengl-files 去掉!!!

#不然会禁用系统的OpenGL功能,影响docker使用

#接下来开始教程

 

一 检查是否有docker旧版本残留并清理干净

#remove docker

sudo apt-get autoremove docker docker-ce docker-engine  docker.io  containerd runc

dpkg -l | grep docker

查看有哪些docker包之后,按照下面依次移除掉

sudo apt-get autoremove docker-ce-*

........

 

 

二 安装Docker

#依次执行下列命令

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

 

echo \

  "deb [arch=amd64 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

 

三 添加非root用户使用docker,很重要

Docker守护程序绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由用户拥有root,其他用户只能使用sudo来访问它。Docker守护程序始终以root用户身份运行。

如果你不想在前言docker与命令sudo,创建一个名为UNIX组docker和用户添加到它。Docker守护程序启动时,它会创建一个可由该docker组成员访问的Unix套接字。

 

1.创建用户组

 

sudo groupadd docker

 

2.将您的用户添加到该docker组。

 

sudo usermod -aG docker $USER

如果没用的话请尝试下面的命令

sudo gpasswd -a ${USER} docker

然后

systemctl restart docker

给目录加权

sudo chmod a+rw /var/run/docker.sock

 

四 安装nvidia-container-toolkit

按顺序执行

---------------------------------------------------

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

 

$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

$ sudo systemctl restart docker

 

-----------------------------------------------------

拉取cuda镜像检查是否安装成功

###sudo docker run --rm --gpus all nvidia/cuda:11.7.0-base-ubuntu22.04 nvidia-smi

 

五 登录NGC平台,获得权限方便拉取镜像

-----------------------------------------------------

docker login nvcr.io

登录NGC获得权限

 

六 拉取镜像

#这里配置的是stream6.1版本,理论上其他版本同理

docker pull nvcr.io/nvidia/deepstream:6.1-triton

 


 

七 创建容器

#这里以拉取的6.1镜像为准,其他版本同理

docker run --gpus all -itd --net=host --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-6.1 nvcr.io/nvidia/deepstream:6.1-triton

#具体各个参数可以参考docker文档,这里不深究

#在下面我会给出nvidia官方的创建示例,和上方不同的地方我会标红做解释为什么更改或删掉

docker run --gpus all -it(创建容器后没加d,无法后台持续运行) –rm(停止容器后会删掉该容器) --net=host --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-6.1 nvcr.io/nvidia/deepstream:6.1-triton

 

八 允许容器访问系统图形界面,并运行samples

 

Linux常用命令xhost命令是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示,运行xhost命令时要求启动本地X-window的图形界面后,在图形界面下的命令行中输入

 

xhost +

 

显示已开启所有访问权限后

再进入容器

Docker exec -it 容器id /bin/bash

 

进入容器后在deepstream6.1/samples/config/deepstream-app/下

随便运行一个示例即可,例如

deepstream-app -c source4……………….txt

接下来就会弹出运行实例,到这里容器部署成功

 


 

九(非必要)如果想推理自定义的源

在刚刚的目录下,我们可以在启动的文件中用vim打开,比如source4开头的那个

打开后里面有一个【source0】或者【source1】

这下面就是配置推理流的地方,很方便,具体的每个参数参考该分类下deepstream配置文件解析.doc,这里举两个例子

[source0]

enable=1 #启用该源

#Type - 1=CamerAV4L2 2=URI 3=MultiURI 4=RTSP 5=CSI camera

type=3 #启用本机目录下多路复用源

uri=file://../../samples/streams/sample_1080p_h264.mp4num-sources=2 #文件地址

gpu-id=0 #第一颗GPU

cudadec-memtype=0

 

[source1]

enable=1 #启用该源

type=1 #启用本机USB摄像头

camera-width=1280 #摄像头分辨率宽

camera-height=720 #摄像头分辨率高

camera-fps-n=30 #分数的分子部分,指定摄像机请求的帧速率,以帧/秒为单位

camera-fps-d=1 #分数的分母部分,指定摄像机请求的帧速率,以帧/秒为单位


ubuntu22.04萌新快速容器化部署deepstream指南的评论 (共 条)

分享到微博请遵守国家法律