Outils pour utilisateurs

Outils du site


dev:python:jupyter-notebook:installation_jupyter_via_docker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
dev:python:jupyter-notebook:installation_jupyter_via_docker [2021/08/26 13:16] – créée yoanndev:python:jupyter-notebook:installation_jupyter_via_docker [2021/08/29 11:09] (Version actuelle) yoann
Ligne 2: Ligne 2:
  
 ====== Installer Jupyter via Docker ====== ====== Installer Jupyter via Docker ======
 +
 +Il existe plusieurs images, la version ''scipy-notebook'' inclus des packages populaires de l'écosystème scientifique Python:
 + 
 +<code bash>
 +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
 +</code>
 +
 +===== 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:
 +
 +<code bash>
 +docker container logs jupyter
 +</code>
 +
 +==== 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
 +
 +<code bash>
 +# 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
 +</code>
 +
 +Récupérer le fichier de configuration généré:
 +<code bash>
 +docker container cp jupyter:/home/jovyan/.jupyter/jupyter_notebook_config.json .
 +</code>
 +
 +On peut maintenant créer un conteneur en montant en lecture seule le fichier de configuration:
 +<code bash>
 +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
 +</code>
 +
 +===== Configuration du notebook =====
 +
 +Le fichier de configuration global du notebook est un fichier python qui peut être généré puis modifier au besoin:
 +
 +<code bash>
 +# 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
 +</code>
 +
 +Extraire le fichier du conteneur
 +<code bash>
 +docker container cp jupyter:/home/jovyan/.jupyter/jupyter_notebook_config.py ./conf/
 +</code>
 +
 +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:
 +<code python>
 +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()
 +</code>
  
  
Ligne 9: Ligne 80:
   * https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html#docker   * 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/
 +  * 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
dev/python/jupyter-notebook/installation_jupyter_via_docker.1629983810.txt.gz · Dernière modification : 2021/08/26 13:16 de yoann