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 ?
-
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.
-
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 !
- 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 ?