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

时间:2018-07-01 03:31:48

标签: docker jupyter-notebook

Docker的新手

在docker中使用jupyter笔记本处理用户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与 my uid / gid匹配,因此写入已安装的文件夹没有权限问题。但是,现在,jovyan(容器用户)无法访问/ opt / conda,它是1000:100拥有的,其他用户无法读取。因此无法加载所有附加软件包!

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

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

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

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

2 个答案:

答案 0 :(得分:3)

使用Jupyter Notebook的最佳实践是使用您自己的用户ID和组ID,以便您创建的新文件具有正确的所有权。然后使用> [1/4] Resolving packages... [2/4] Fetching packages... error > css-loader@1.0.0: The engine "node" is incompatible with this module. > Expected version ">= 6.9.0 <7.0.0 || >= 8.9.0". error Found > incompatible module info Visit https://yarnpkg.com/en/docs/cli/add for > documentation about this command. 将自己添加到用户组中,以访问所需的文件夹(例如/ opt / conda)。

完整命令为:

--group-add users

答案 1 :(得分:0)

我遇到了同样的问题,并找到了here引用的很好的解决方案。

COPY --chown=1000:100 hostfolder/* /home/$NB_USER/work/

请注意,尚未在命令选项中实现环境或参数扩展,因此,以下行将导致构建错误failed to build: unable to convert uid/gid chown string to host mapping: can't find uid for user $NB_UID: no such user: $NB_UID

# COPY --chown=$NB_USER:$NB_GID hostfolder/* /home/$NB_USER/work/

因此,需要对用户(jovyan)和组名(用户)或id(1000:100)进行硬编码。