gpt4 book ai didi

docker如何处理jupyter笔记本的权限 - 3种不起作用的方法

转载 作者:行者123 更新时间:2023-12-02 16:31:06 29 4
gpt4 key购买 nike

在 Docker 中使用 jupyter 笔记本处理 uid/gid 和权限的最佳实践是什么?

  1. jupyter/docker-stack 中的 jupyter+python Dockerfile 之一时运行后,笔记本将保存为 uid/gid 1000:100。如果安装的主机文件夹不可被“其他”写入,则此操作将会失败,这是一种丑陋的方法。

  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=yes \
    --user root \
    --mount type=bind,source="$(pwd)",target=/home/jovyan/work \
    myimage

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

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

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

所以看来所有的可能性都被阻止了或者是一个糟糕的选择。 docker 中的文件权限很难。

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

最佳答案

Jupyter Notebook 的最佳实践是使用您自己的用户 ID 和组 ID,以便您创建的新文件将拥有正确的所有权。然后使用 --group-add users 将自己添加到 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

关于docker如何处理jupyter笔记本的权限 - 3种不起作用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51120204/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com