SSH远程直连服务器docker容器的jupyter
动机:最近在公司服务器使用jupyter出现了点问题,也不知道怎么回事,jupyter lab打开都没问题,但是准备打开一个ipynb文件时就卡住了,啥反应没有,ctrl+C 也不能关掉jupyter。尝试了种种手段,也没搜到合适的解决方案,估计是服务器网络设置问题吧
然后开了docker容器,发现在容器里面使用jupyter没啥问题,只是端口映射需要做好,有几种解决方案吧
- 第一种:参考SSH远程直连Docker容器,个人试了,不太好用,仅供参考
- 第二种,利用vscode的插件
Dev Containers
,即使容器初始化的时候没做端口转发,也可以自动做端口转发,不需要网上那些改什么配置文件,很是神奇 - 第三种,一种是容器在初始化的时候使用
--publish 10001:9999
做端口转发,hostPort:containerPort,即前者是宿主机端口,后者是容器端口,这个应该比较靠谱,推荐使用 - 第四种,一种是在容器初始化的时候使用宿主机的网络,命令如下
--net host
,这个也是用起来最方便的,登录jupyter起来就用原来的方案即可,非常丝滑,完整初始化命令如下:
docker run -itd \--gpus all \--volume /workspaces:/workspaces \--volume /databases:/databases \--workdir /workspaces \--env JUPYTER_ENABLE_LAB=yes \--shm-size 256g \--name test \--net host \nvcr.io/nvidia/cuda:12.1.1-cudnn8-devel-ubuntu20.04 \/bin/bash
容器配置好,screen打开jupyter之后,远程登录容器里的jupyter即可使用原来的命令:
ssh -L8888:localhost libai@xx.x.xxx.111
其中 libai@xx.x.xxx.111
是容器宿主机的地址,跟容器没半毛钱关系,非常丝滑。