{{tag>software python jupyter jupyterlab notebook install docker todo}} ====== Installer Jupyter via Docker ====== Il existe plusieurs images, la version ''scipy-notebook'' inclus des packages populaires de l'écosystème scientifique Python: docker pull jupyter/scipy-notebook:python-3.9.6 docker run --rm -p 10000:8888 -e JUPYTER_ENABLE_LAB=yes -v "${PWD}":/home/jovyan/work jupyter/scipy-notebook:python-3.9.6 ===== Authentification ===== Par défaut à chaque démarrage du service un jeton aléatoire (token) est généré. Il est affiché dans les logs et doit être intégré à la requête pour pouvoir être autorisé à accéder au service: docker container logs jupyter ==== Définir un mot de passe ==== Lors du premier démarrage, on saisit l'URL accompagnée du jeton, on peut alors définir un mot de passe. Il est également possible de définir un mot de passe en amont. Il est stocké dans un fichier de configuration au format JSON # Création d'un conteneur temporaire pour générer un fichier de configuration docker run --name jupyter -it --rm jupyter/base-notebook start.sh jupyter notebook password Récupérer le fichier de configuration généré: docker container cp jupyter:/home/jovyan/.jupyter/jupyter_notebook_config.json . On peut maintenant créer un conteneur en montant en lecture seule le fichier de configuration: docker container run --name jupyter --detach --user 1000 --group-add users \ -v "${PWD}/work":/home/jovyan/work \ -v "${PWD}/jupyter_notebook_config.json":"/home/jovyan/.jupyter/jupyter_notebook_config.json":ro \ -e JUPYTER_ENABLE_LAB=yes -e RESTARTABLE=yes \ --publish "127.0.0.1:9090:8888/tcp" jupyter/scipy-notebook:python-3.9.6 ===== Configuration du notebook ===== Le fichier de configuration global du notebook est un fichier python qui peut être généré puis modifier au besoin: # Création d'un conteneur temporaire pour générer un fichier de configuration docker run --name jupyter -it --rm jupyter/scipy-notebook:python-3.9.6 start.sh jupyter notebook --generate-config Extraire le fichier du conteneur docker container cp jupyter:/home/jovyan/.jupyter/jupyter_notebook_config.py ./conf/ Le mot de passe peut également être définit dans le fichier ''jupyter_notebook_config.py'' mais il doit avant être généré manuellement depuis un interpréteur Python Depuis le conteneur temporaire, lancer un interpreteur puis les commandes suivantes: from notebook.auth import passwd; # Il est déconseillé de définir directement l'argument passphrase depuis # ipython car il sera visible dans l'historique de commandes. # Appeler la fonction passwd() sans l'argument passphrase, il sera # demandé de façon interactive passwd(algorithm='sha1') # copier le hash généré et quitter quit() ===== Références ===== * https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html#docker * https://jupyter-docker-stacks.readthedocs.io/en/latest/ * https://jupyter-docker-stacks.readthedocs.io/en/latest/using/common.html#docker-options * https://jupyter-notebook.readthedocs.io/en/latest/public_server.html#securing-a-notebook-server