问题描述
我目前正在使用远程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添加到笔记本的树中)。
有谁会知道为什么会这样,如果是这样,如何“刷新”/“更新”树?
非常感谢所有人和任何帮助!
1楼
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
是容器中username
的名称)。
容器中的路径取决于您正在使用的docker镜像。 如果您不知道容器中的路径,可以使用以下命令在容器内运行bash来查看容器文件系统:
nvidia-docker run -it --entrypoint /bin/bash NAMEOFDOCKERIMAGE
运行此命令后,您将进入容器内的bash,因此您可以使用ls
, pwd
等查看内部文件系统。