我正尝试在远程计算机上通过 Docker 运行的 Jupyter Lab 中工作,但无法保存我打开的任何文件。
我正在使用 Jupyter Docker Stack .我已经在我的远程机器上安装了 docker 并成功拉取了镜像。
我在我的 ~/.ssh/config
文件中设置了端口转发:
Host mytunnel
HostName <remote ip>
User root
ForwardAgent yes
LocalForward 8888 localhost:8888
当我启动容器时,我使用以下脚本:
docker run \
-p 8888:8888 \
-e JUPYTER_ENABLE_LAB=yes \
-v "${PWD}":/home/jovyan/work jupyter/tensorflow-notebook
容器正在运行:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8fc3c720af1 jupyter/tensorflow-notebook "tini -g -- start-no…" 8 minutes ago Up 8 minutes 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp adoring_khorana
我得到了常规的 Jupyter url:
http://127.0.0.1:8888/lab?token=<token>
但是当我在浏览器中访问服务器时,保存选项被禁用。
我已经尝试了一些建议的解决方案 elsewhere in SO , 但没有运气。
这是关于通过 SSH 连接的吗? Jupyter 服务器认为它不是安全连接?
最佳答案
问题可能与 SSH 配置有关,但我认为更可能与卷挂载的权限问题有关。
请尝试查看您的 Docker 容器日志以查找与权限相关的错误。您可以使用 following 来做到这一点:
docker container logs <container id>
也请查看您的 docker run
命令提供的输出。
另外,尝试在容器中打开一个shell:
docker exec -it <container id> /bin/bash
并查看您是否能够在默认工作目录中创建文件:
touch /home/jovyan/work/test_file
最后,Jupyter docker stacks 存储库有一个 troubleshooting page几乎完全致力于权限问题。
请特别考虑 Additional tips and troubleshooting commands for permission-related errors 中提供的解决方案并且,按照建议,尝试让您的操作系统用户启动容器:
docker run \
-p 8888:8888 \
-e JUPYTER_ENABLE_LAB=yes \
--user "$(id -u)" --group-add users \
-v "${PWD}":/home/jovyan/work jupyter/tensorflow-notebook
之后,同样按照上述文档中的建议,使用以下命令查看容器是否已正确安装:
docker inspect <container_id>
在获得的结果中记下 RW
字段的值,该字段指示卷是否可写 (true
) 或不可写 (false
) .
关于docker - 无法在 docker 容器中运行的远程 Jupyter 服务器上保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73210034/