自从Jetpack 4.3,Nvidia引入了Cloud-Native的概念,然后JetPack系统image就自带了nvidia的docker。使用docker的好处是可以快速部署一个目标环境,减少了各自依赖安装的环节,大大提高了生产效率。我们今天就来看看,怎样可以在Jetson Nano上快速搭建一个JupyterLab的环境。比起之前介绍的《Jetson Nano 安装 Jupyter Lab》,要简单很多。
检查docker是否有正确安装
- 检查docker版本
docker --version
如果你看到docker能正常显示版本信息,则代表docker已经正常安装,否则你要先安装在环境中docker,可以参考官方网站。
选择Jupyter的docker image
Jupyter团队已经在docker hub为你准备好三款基础的jupyter image,它们的区别在于不同image上安装了不同的软件,他们的用途有所不同,你可以根据你的自身需求,选择适合的image,萝卜青菜各有所爱。
- jupyter/base-notebook
这是一个支持所有核心通用技术的image。它是所有其他堆栈的基础,包含:Notebook,JupyterLab,conda,sudo等等常用的软件和环境配置,我们也推荐使用这个image。 - jupyter/minimal-notebook
这是jupyter的最小化image,只添加了在Jupyter应用程序中工作时有用的命令行工具,例如vi, nano, unzip之类的。这个image比较适合用来做基础image来制作自己的image。 - jupyter/scipy-notebook
这包括了来自scipy生态系统的流行包,包括 altair, beautifulsoup4, bokeh, bottleneck, cloudpickle, conda-forge, cython, dask, dill, h5py, matplotlib-base, numba, numexpr, pandas, patsy, protobuf, pytables, scikit-image, scikit-learn, scipy, seaborn, sqlalchemy, statsmodel, sympy, widgetsnbextension, xlrd和用于 Python 笔记本中的交互式可视化和绘图的 ipympl 和 ipywidgets。 - jupyter/tensorflow-notebook
这包括深度学习需要的工具。这是在jupyter/scipy-notebook的基础上增加了tensorflow的库。
还有装好其他环境的image,大家可以参考《在树莓派/JetsonNano安装docker》
下载 jupyter image
选好了image,运行以下命令就能下载对应的image到本地
sudo docker pull jupyter/base-notebook
运行jupyter
sudo docker run -p 8888:8888 -v /home/bbot:/home/jovyan/work jupyter/base-notebook
其中 -p 8888:8888 代表把系统的8888端口(左边)映射到docker环境的8888端口(右边)。
-v /home/bbot:/home/jovyan/work 指的是把系统home目录映射到docker环境里的/home/jovyan/work目录,你可以根据需要设定映射关系。
上图代表运行成功,通过红框的url访问jupyter。
配置jupyterlab
参考《Jetson Nano 安装 Jupyter Lab》,你可以设置密码来访问jupyter,还有支持本地网络访问。
开机启动jupyterlab
稍微修改一下启动的命令,即可支持开机时自动启动jupyter的容器。
sudo docker run --restart=always -d -p 8888:8888 -v /home/bbot:/home/jovyan/work jupyter/base-notebook
其中-restart=always代表无论容器的当前状态如何,当docker启动时容器会自动启动。
-d 的作用是容器在后台运行。
通过jupyterlab登录到宿主的系统
有时候,通过docker来安装jupyter就是为了方便远程工作,但需要连接回宿主系统也是经常需要的,因某些设备可能在设定jupyter时没有设置好。
因为base-notebook没有事先安装openssh-client,所以需要先安装。
sudo apt-get update
sudo apt-get install openssh-client
安装好就可以通过172.17.0.1地址登录宿主
ssh root@172.17.0.1
如果想更方便快捷进入系统,可以把docker里的public key加到宿主上,这样连密码都不用打。
好的,这里完了,折腾愉快!