无法在运行于Docker容器中的远程Jupyter服务器上保存文件

3
我正在尝试在远程机器上通过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网址:

http://127.0.0.1:8888/lab?token=<token>

但当我在浏览器中访问服务器时,"保存" 选项是被禁用的。

enter image description here

我尝试了一些在其他地方提出的解决方案(在 stackoverflow 上),但没有成功。

这是否与通过 SSH 连接有关?Jupyter 服务器认为这不是一个安全连接?


在这里[https://discourse.jupyter.org/t/cant-save-file-when-working-on-remote-container/15172?u=fomightez]也发布了。 - Wayne
1个回答

1
可能问题与SSH配置有关,但我认为更可能与您的卷挂载权限问题有关。请尝试查看您的Docker容器日志,寻找与权限相关的错误。您可以使用以下链接查看:{{link1}}。
docker container logs <container id>

请看您的docker run命令输出。
此外,请尝试在容器中打开一个shell:
docker exec -it <container id> /bin/bash

并查看您是否能够在默认工作目录中创建文件:
touch /home/jovyan/work/test_file

最后,Jupyter docker stacks存储库有一个故障排除页面,几乎完全专门解决权限问题。
请特别考虑与权限相关的错误的附加提示和故障排除命令中提供的解决方案,并尝试按建议使用您的操作系统用户启动容器。
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脚本正是我需要的。非常感谢! - ncgoodbody
不客气。太好了,@ncgoodbody。我很高兴听到答案有帮助,并且你能够解决问题。 - jccampanero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接