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
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
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
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()