python - 远程 Jupyter Notebook + Docker -- 不更新文件目录?
问题描述
我目前正在使用远程 Jupyter 笔记本(通过 docker 映像),并且在查找目录中存在的文件夹(我正在运行笔记本的位置)但在笔记本树中不存在时遇到问题。
我用来执行笔记本的命令:
nvidia-docker run -it -p 8888:8888 --entrypoint /usr/local/bin/jupyter NAMEOFDOCKERIMAGE notebook --allow-root --ip=0.0.0.0 --no-browser
我用来远程访问笔记本的命令:
ssh -N -f -L localhost:8888:localhost:8888 remote_user@remote_host
奇怪的是,如果我导航到笔记本的工作目录(在远程主机/服务器上)并添加文件夹 + 文件,笔记本将不会反映更改(即工作目录中的 mkdir new_folder 不会将 new_folder 添加到笔记本的树中)。
有谁知道为什么会这样,如果是这样,如何“刷新”/“更新”树?
非常感谢大家和任何帮助!
解决方案
Docker 容器有一个独立的文件系统。这意味着在容器中运行的程序(在您的情况下是 jupyter notebook)看到的文件夹与您在主机系统中的文件夹不同。
如果要让容器访问主机中的一个文件夹,可以在运行 docker 时使用该选项。 -v
在您的情况下,您应该使用以下命令运行容器:
nvidia-docker run -it -p 8888:8888 -v /PATH_TO_HOST_FOLDER:/PATH_TO_CONTAINER_FOLDER --entrypoint /usr/local/bin/jupyter NAMEOFDOCKERIMAGE notebook --allow-root --ip=0.0.0.0 --no-browser
在哪里:
PATH_TO_HOST_FOLDER
是主机系统中要与容器共享的文件夹的路径。PATH_TO_CONTAINER_FOLDER
是容器文件系统中文件夹的挂载点(例如,容器中的用户名/home/username/work
在哪里username
)。
容器中的路径取决于您使用的 docker 映像。如果您不知道容器中的路径,可以使用以下命令在容器内运行 bash 来查看容器文件系统:
nvidia-docker run -it --entrypoint /bin/bash NAMEOFDOCKERIMAGE
运行此命令后,您将处于容器内的 bash 中,因此您可以使用 、 等查看内部文件ls
系统pwd
。
推荐阅读
- python - 如何将数据折叠成最少的列?
- visual-studio-code - 如何将包含“+”号的键绑定添加到扩展?
- javascript - MediaStreamAudioDestinationNode 始终为 Stereo;忽略 AudioNodeOptions
- css - 在overflow-x auto中将子级扩展到父级的全宽
- python - PySide 当我在主窗口中显示对话框时,它会中断我的工作线程
- reactjs - 'MouseEvent 类型的参数
' 不能分配给类型为 'number' 的参数 - javascript - 从 HTML 读取文件输入并实际保存以通过电子邮件发送
- python - csv文件天蓝色数据块的导入错误
- ng-zorro-antd - 使日期选择器在“年”之前显示“月”(可能吗?)
- reactjs - useRef 中函数的初始值引发错误,原因是“'() => never' 类型的参数不可分配给 'T' 类型的参数。”