概览:
一、docker简介
-
用途:对于一项工程,不同的机器都需要单独为其配置环境,且有时配环境是一件相当麻烦的事情。那么,有没有一种方法可以把工程代码和其所需的环境配置一同发布呢?——Docker。有了Docker,我们就可以开发部署一套流程走完~Docker文档链接
-
历史:2010年,在美国成立了一家公司,名为dotCloud,该公司把研究的一项容器化技术命名为Docker,Docker刚刚诞生的时候并没有引起行业的注意;2013年,Docker开源,由于其实用性受到广大用户的喜爱。Docker链接
-
更具体的像如何安装docker以及docker命令等这里不细讲,推荐一个视频
二、在jetson xavier nx上制作docker镜像
-
拉取官方镜像
jetson xavier nx开发板上是有预装docker的,可以用systemctl start docker
启动docker,用docker version
查看docker版本;注意,jetson xavier nx是有官方镜像的(非常感谢xy师兄提前提醒),地址见链接,在Query里填入jetson就可以选取自己需要的镜像了。以镜像NVIDIA L4T PyTorch为例:
(1)拉取镜像(可选择需要的pytorch和torchvision版本的镜像):sudo docker pull nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py3
(2)开启一个容器:sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py3
注意,若一个容器需要多次开启,最好上述命令不要带--rm
,因为下次开启的时候传到里面的文件会被删除了。个人感觉最好是把文件夹通过-v
挂载上去,需要注意的是:挂载的文件夹在外部如何改变,容器里面会相应改变;在容器里面对挂载的文件夹做改变,外部也会相应改变。命令如下:sudo docker run -it --rm --runtime nvidia --network host -v /home/user/project:/location/in/container nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py3
-
安装常用库opencv-4.1.0
在jetson nx的镜像里装opencv并不像电脑上一键pip install轻松搞定,相反,采取这样的方式会有奇奇怪怪的报错,若跟着报错一步步查找修改,只能是“惶惶不见终日”了。好笑的是,当时在查opencv报错时,不知何时进入耳朵的“心平气和,做只大ne"时刻萦绕脑海,嗯,所以还是有必要把它挂在这次的博客上的。
(1). updating the packages:apt update
apt install -y build-essential cmake git libgtk2.0-dev pkg-config libswscale-dev libtbb2 libtbb-dev
apt install -y python-dev python3-dev python-numpy python3-numpy
apt install -y curl
(2). install video & image formats:apt install -y libjpeg-dev libpng-dev libtiff-dev libjasper-dev
apt install -y libavcodec-dev libavformat-dev
apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
apt install -y libv4l-dev v4l-utils qv4l2 v4l2ucp libdc1394-22-dev
(3). download opencv & contribs modules:curl -L https://github.com/opencv/opencv/archive/4.1.0.zip -o opencv-4.1.0.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.0.zip -o opencv_contrib-4.1.0.zip
(4). unzipping packages:apt-get install unzip
unzip opencv-4.1.0.zip
unzip opencv_contrib-4.1.0.zip
cd opencv-4.1.0/
(5). create directory:apt-get install mkdir
mkdir release
cd release
(6). build opencv using Cmake:cmake -D WITH_CUDA=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.0/modules \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D BUILD_opencv_python2=ON \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
(7). compile opencvmake -j4
make install
-
上述是opencv-4.1.0的安装方式,若编译不成功,可查看opencv-4.1.0/.cache/中是否缺少文件,它的文件结构应如下所示,具体可参考这篇博客 :
- .cache
- xfeatures2d
- boostdesc
- 0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i
- 0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
- 202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
- 232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i
- 324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i
- 98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i
- e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
- vgg
- 151805e03568c9f490a5e3a872777b75-vgg_generated_120.i
- 7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
- 7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
- e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i
- boostdesc
- xfeatures2d
- .cache
若真的是缺少文件,则下载放好后,用make -j8
和make install
就可重新编译opencv_contrib模块了。
暂时想到这些,先记录一下,如果发现有不当的地方,欢迎指正哦~~
[^1] Docker文档链接.
[^2] Docker链接.
[^3] 视频.
[^4] 英伟达镜像.
[^5] 编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决.