远程服务器Docker内配置和访问JupyterLab

相关文章
  如果远程服务器docker想通过pycharm实现代码调试,可参考博客pycharm与ssh远程访问服务器docker
  如果远程服务器docker想部署Flask项目,可参考博客远程服务器docker部署Flask+MongoDB项目

配置方法:
  任意选择一个镜像,并创建相应的容器,创建容器及容器内的ssh和防火墙配置其可参考上述的两个文章。需要注意的是,jupyter-lab默认使用端口8889,因此在run时候要额外增加一个端口映射规则,例如:

sudo docker run -p [自选端口号1]:22 -p [自选端口号2]:8889 --gpus all -itd --name [自己起个名字] --privileged=true -v [宿主机(本地)的目录]:[自定义创建好的容器内的目录] [镜像名称或id] /bin/bash

  • -p [自选端口号1]:22:同时将该容器映射到对应的端口号,并与22号端口进行关联监听,该端口映射后可以直接通过SSH访问该docker,无须经过宿主机;
  • -p [自选端口号2]:8889:同时将该容器映射到对应的端口号,并与8889号端口进行关联监听;
  • –gpus all:指定该实例化的容器内可使用所有宿主机包含的gpu,如果你配置的项目涉及到使用深度学习的模型获依赖于显存,则需要配置该参数,但你的宿主机需要存在显存才可以;
  • -i:保持STDIN开启;
  • -t:分配一个伪终端;
  • -d:在后台运行
  • –name [自己起个名字]:为了避免记住冗长复杂的容器id,通常可为容器设置一个名称,注意不要与现有的名称相同;
  • –privileged:设置为true时,该容器可以拥有绝对的权利,例如开启防火墙端口等。非常关键,因为这直接关系到你的docker可不可以被宿主机以及外界访问;
  • -v [宿主机(本地)的目录]:[自定义创建好的容器内的目录]:为了让容器内的文件与宿主机保持同步,可执行该参数,注意自定义创建好的容器内目录必须是绝对路径。

  创建完之后,请参考上述两个相关文章,配置SSH等。然后进入容器,安装jupyter-lab:

pip3 install jupyter jupyter-lab

  安装完之后,在容器内开启8889的端口防火墙:

sudo /sbin/iptables -I INPUT -p tcp --dport 8889 -j ACCEPT

当然宿主机也要开启相应映射的端口。

  最后启动jupyter:

jupyter-lab --ip 0.0.0.0 --port 8889 --allow-root

  注意一定要添加参数–ip 0.0.0.0 ,否则8889在容器内默认是在127.0.0.1地址,此时无法映射到宿主机,需要将该程序运行在0.0.0.0上。

  浏览器键入服务器ip地址以及映射端口号(直接从启动的链接复制粘贴即可)运行效果如下:

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐