前言:本次文章默认你已经学会docker,不会的可以先去学或者看看我的docker笔记,里面有很多命令运行实例与解析,但如果实在来不及学,也可以直接使用下文写的docker run的命令来运行你的docker。
1.安装nvidia-docker
可以使用小鱼一键安装程序,很好用,省事,喜欢可以给个stars
https://github.com/fishros/install
#输入下面这段命令:
wget http://fishros.com/install -O fishros && . fishros
#看选项选择安装docker
2.以搭建yolov8环境为例:
在jetson上输入:
#拉取yolov8镜像,并设置桌面的共享文件夹
t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host -v /tmp/.x11-unix:/tmp/.x11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host --name yolov8 --device /dev/video0 --device /dev/video1 -v /home/nvidia/Desktop/sharefiles/:/usr/src/ultralytics/runs/ --runtime=nvidia $t
解析:
目的让容器内的画面能够映射到宿主机上,如果不输入的话推理时你看不到推理画面
-v /tmp/.x11-unix:/tmp/.x11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host
--name yolov8 给容器命名为yolov8
--device /dev/video0 --device /dev/video1 挂载摄像头设备
-v /home/nvidia/Desktop/sharefiles/:/usr/src/ultralytics/runs/ 设置共享文件夹,方便获取训练的权重文件或推理结果
runtime=nvidia 让docker调用nvidia显卡
3.使用vscode进行开发容器
参考链接:https://blog.csdn.net/weixin_41742296/article/details/131253067
参考链接:https://blog.csdn.net/weixin_43799388/article/details/127022705?spm=1001.2014.3001.5506
安装Remote - SSH 插件。
输入一下配置:这里的配置只是实例,别照抄啊!
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host AGX
HostName 192.168.31.137
User nvidia
Port 22
IdentityFile ~/.ssh/id_rsa_agx
连接远程主机成功后,开始连接远程容器:
若还是无法连接容器:下载openssh并配置环境变量
下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases
配置python路径
4.推理时出现图形化界面显示问题
宿主机的DISPLAY与容器的一致才能运行!!!
#首先在jetson上输入: (不能使用ssh输入,要插上键盘在jetson上输入)
xhost +
#查看DISPLAY
env | grep DISPLAY
#设置DISPLAY
export DISPLAY=:0
如果遇到报错,看看这三篇参考文章:
https://blog.csdn.net/carissaying/article/details/105319887
https://zhuanlan.zhihu.com/p/460494660
https://wiki.ros.org/docker/Tutorials/GUI
之后可以直接在我们的笔记本的vscode上推理使用yolov8,理论上也是支持其他的算法,要注意的是该算法环境cuda、pytorch版本与你的jetpack是否兼容。
之后我会出一篇关于用docker部署新开源的算法到jetson设备上的文章,包含环境选择搭配思路。希望对刚上手jetson的同学有所帮助,麻烦点赞收藏,谢谢!