概览:

  • 一、docker简介
  • 二、在jetson xavier nx上制作docker镜像


一、docker简介

  1. 用途:对于一项工程,不同的机器都需要单独为其配置环境,且有时配环境是一件相当麻烦的事情。那么,有没有一种方法可以把工程代码和其所需的环境配置一同发布呢?——Docker。有了Docker,我们就可以开发部署一套流程走完~Docker文档链接
  2. 历史:2010年,在美国成立了一家公司,名为dotCloud,该公司把研究的一项容器化技术命名为Docker,Docker刚刚诞生的时候并没有引起行业的注意;2013年,Docker开源,由于其实用性受到广大用户的喜爱。Docker链接
  3. 更具体的像如何安装docker以及docker命令等这里不细讲,推荐一个视频

二、在jetson xavier nx上制作docker镜像

  1. 拉取官方镜像
    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
  2. 安装常用库opencv-4.1.0
    在jetson nx的镜像里装opencv并不像电脑上一键pip install轻松搞定,相反,采取这样的方式会有奇奇怪怪的报错,若跟着报错一步步查找修改,只能是“惶惶不见终日”了。好笑的是,当时在查opencv报错时,不知何时进入耳朵的“心平气和,做只大ne"时刻萦绕脑海,嗯,所以还是有必要把它挂在这次的博客上的。
    (1). updating the packages:
    apt updateapt install -y build-essential cmake git libgtk2.0-dev pkg-config libswscale-dev libtbb2 libtbb-devapt install -y python-dev python3-dev python-numpy python3-numpyapt install -y curl (2). install video & image formats:
    apt install -y libjpeg-dev libpng-dev libtiff-dev libjasper-devapt install -y libavcodec-dev libavformat-devapt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-devapt 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.zipcurl -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 unzipunzip opencv-4.1.0.zipunzip opencv_contrib-4.1.0.zipcd opencv-4.1.0/ (5). create directory:
    apt-get install mkdirmkdir releasecd 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 opencv
    make -j4make install
  3. 上述是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

    若真的是缺少文件,则下载放好后,用make -j8make install就可重新编译opencv_contrib模块了。

    暂时想到这些,先记录一下,如果发现有不当的地方,欢迎指正哦~~
    [1] Docker文档链接.
    [2] Docker链接.
    [3] 视频.
    [4] 英伟达镜像.