码头工人如何处理Jupyter Notebook的权限-3种无效的方法

mat*_*nts 5 docker jupyter-notebook

Docker新手

在Docker中使用Jupyter Notebook处理用户ID / GID和权限的最佳实践是什么?

  1. 当运行https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook中的jupyter + python Dockerfile之一时,笔记本将以uid / gid 1000:100保存。如果已安装的主机文件夹不能由“ other”写入,则此操作将失败。

  2. 可以指定NB_UID和NB_GID运行笔记本图像,如下所示:

    docker run -p 8888:8888 -it --rm -e NB_UID = $(id -u)-e NB_GID = $(id -g)-e GRANT_SUDO =是--user root --mount type = bind,source = “ $(pwd)”,target = / home / jovyan / work myimage

在这种情况下,容器中joyvan的uid / gid与我的 uid / gid 匹配,因此写入已安装的文件夹没有权限问题。但是,现在,jovyan(容器用户)无法访问/ opt / conda,它是1000:100拥有的,其他用户无法读取。因此,无法加载所有附加软件包!

  1. 我们也可以使用--build-arg myuid = $(id -u)--build-arg mygid = $(id -g)运行docker build

我相信这会导致/ home / jovyan和/ opt / conda都和我同一个uid:gid拥有,一切都很好。但是,生成的图像只能由我使用。如果我将其提供给我的协作者(具有不同的uid),它将无法正常工作。

因此,似乎所有可能性都被阻止或选择不当。泊坞窗中的文件权限很困难。

任何人都可以分享解决此问题的最佳方法吗?

Sam*_*ala 5

Jupyter Notebook的最佳做法是使用您自己的用户ID和组ID,以便您创建的新文件具有正确的所有权。然后使用--group-add users将自己添加到用户组以访问所需的文件夹(例如/ opt / conda)。

完整的命令将是:

docker run -it --rm --user $(id -u):$(id -g) --group-add users -v "$(pwd)":/home/jovyan -p 8888:8888 jupyter/scipy-notebook