docker - 在 Docker 容器中将 Spyder 连接到远程 Jupyter Notebook
问题描述
我一直在尝试将 Spyder 连接到在远程服务器上运行的 docker 容器并且一次又一次地失败。这是我要实现的目标的快速图表:
目前我正在通过 ssh 在远程机器上启动 docker 容器
docker run --runtime=nvidia -it --rm --shm-size=2g -v /home/timo/storage:/storage -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group --ulimit memlock=-1 -p 8888:8888 --ipc=host ufoym/deepo:all-jupyter
所以我在端口 8888 上转发。然后在我正在运行的 docker 容器内
jupyter notebook --no-browser --ip=0.0.0.0 --port=8888 --allow-root --notebook-dir='/storage'
好的,现在对于 Spyder 部分 - 根据此处的说明,我转到~/.local/share/jupyter/runtime
,在其中找到以下文件:
kernel-ada17ae4-e8c3-4e17-9f8f-1c029c56b4f0.json nbserver-11-open.html nbserver-21-open.html notebook_cookie_secret
kernel-e81bc397-05b5-4710-89b6-2aa2adab5f9c.json nbserver-11.json nbserver-21.json
不知道该拿哪一个,我将它们全部复制到我的本地机器上。
我现在转到控制台->连接到现有内核,这给了我“连接到现有内核”窗口,我照此填写(当然使用我的实际远程 IP 地址):
(这里我选择了第一个 json 文件Connection info:
)。我按 Enter 键,Spyder 变暗并崩溃。
无论我选择哪个连接信息文件,都会发生这种情况。所以,我的问题是:
1:我做这一切正确吗?我找到了很多关于如何连接到远程服务器的说明,但到目前为止还没有找到专门连接到远程服务器上 docker 上的 jupyter notebook 的说明。
2:如果是,那么我还能做些什么来解决我遇到的问题?
我还应该注意,通过本地计算机上的浏览器连接到 Jupyter Notebook 没有问题。只是我更愿意使用 Spyder 作为我的 IDE。
提前谢谢了!
解决方案
这与其说是一种解决方案不如说是一种解决方法,但 sshfs 可能会有所帮助
使用 sshfs 将远程机器的主目录挂载到本地目录,然后您的 Spyder 本地副本可以像编辑本地文件一样编辑该文件。
sshfs remotehost.com:/home/user/ ./remote-host/
当您在 Spyder 中点击保存时,通常需要大约半秒的时间将更改上传到 AWS 主机,这对我来说是可以接受的延迟。当需要运行代码时,通过 ssh 进入远程机器,然后从 IPython shell 运行代码。它并不优雅,但它确实有效。
我不希望这是最好的答案,但也许您可以将其用作权宜之计。
推荐阅读
- javascript - 遍历JSON数组放入新数组
- c# - 根据带有 ID 的字符串数组获取数据库中的所有行并将它们填充到 GridView
- heroku - 登录 Heroku 时出现 MISSING SESSION 错误消息
- javascript - 在 Angular 中等待用户交互时,可替代延迟(反?-)模式
- kivy - 如何删除 kivy BoxLayout 中多余的多余空间?
- google-apps-script - 有没有办法实时更新谷歌表单?正如受访者回答的那样?
- command-line - Msys终端永久运行命令
- javascript - 防止上次较长的通话覆盖较短的新通话
- python - nextcord 包的错误处理程序问题
- html - 减小屏幕尺寸时如何在图像上书写文字