8 votes

docker comment gérer les permissions pour jupyter notebook - 3 approches qui ne fonctionnent pas

Nouveau sur Docker

Quelle est la meilleure pratique pour gérer l'identification de l'utilisateur/le GID et les permissions avec les notebooks Jupyter dans Docker ?

  1. Lorsque l'un des Dockerfiles jupyter+python de l'application https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook est exécuté, un carnet de notes est enregistré avec l'uid/gid 1000:100. Cela échouera si un dossier hôte monté n'est pas accessible en écriture par "other", ce qui est une approche peu élégante.

  2. L'image du notebook peut être exécutée en spécifiant le NB_UID et le NB_GID, comme ceci :

    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

Dans ce cas, les uid/gid de joyvan dans le conteneur correspondent. mon uid/gid, de sorte qu'il n'y a pas de problème de permissions pour écrire dans un dossier monté. Cependant, maintenant, jovyan (l'utilisateur du conteneur) ne peut pas accéder à /opt/conda, qui appartient à 1000:100 et n'est pas lisible par les autres. Ainsi, tous les paquets complémentaires ne peuvent pas être chargés !

  1. Nous pourrions également exécuter docker build avec --build-arg myuid=$(id -u) --build-arg mygid=$(id -g)

Je pense que cela aurait pour résultat que /home/jovyan et /opt/conda appartiendraient au même uid:gid que moi, tout va bien. Cependant, l'image résultante peut être utilisée sólo par moi. Si je le donne à mes collaborateurs (qui ont un uid différent), il ne fonctionnera pas.

Il semble donc que toutes les possibilités soient bloquées ou constituent un mauvais choix. Les autorisations de fichiers dans Docker sont difficiles.

Quelqu'un peut-il partager la meilleure approche pour ce problème ?

10voto

Samuli Asmala Points 312

La meilleure pratique avec Jupyter Notebook est d'utiliser votre propre identifiant d'utilisateur et votre propre identifiant de groupe afin que les nouveaux fichiers que vous créez aient la bonne propriété. Utilisez ensuite --group-add users pour vous ajouter à utilisateurs pour obtenir l'accès aux dossiers requis (par exemple /opt/conda).

La commande complète serait :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X