##要約
Jupyter notebookは便利です。Anacondaからインストールすると、ローカルのコンピュータをサーバーとして自作自演クライアントになる設定になっています。リモートをサーバーとしてupyter notebookを走らせることはできますが、セキュリティ面で心配です。そこで、sshで暗号化してhttpsでつながるようにすることにしました。jupyter notebookのコンフィギュレーションにちょっと鍵情報をたして、dockerにjupyter notebookを走らせるよう記述し新たなdockerをビルドします。
###注意点
実際にはここに書いてある以外にクライアントのブラウザでhttpsを受けるために証明書が必要です。ここには書いてないです。
このバージョンは完全な記述ではないです。
##手順
###joupyter notebookのconfigurationに鍵情報を書き込む。
jupyter notobookを常駐させたいdockerをリモートで走らせ、たうえで、
In [2]: from IPython.lib import passwd
In [3]: passwd()
Enter password:
となるので、自分で決めたパスワードを入力する。
Verify password:
で同じのを入力する。すると、
Out[3]: 'sha1:*****
とshaのカギができるので、これを
editor ~/.jupyter/jupyter_notebook_config.py
とかやって、jupyter_notebook_config.pyを開き、編集する。上記ののカギを
c.NotebookApp.password = u’sha1***'
というようにeditする。jupyter_notebook_config.py
ではコメントアウトしてあるはずなので、コメントアウトを解除しておく。
###jupyterを起動するためのシェルスクリプト
jupyterを起動するためのシェルスクリプトも書いておきます。
#!/bin/bash
jupyter notebook --port=9999 --ip=0.0.0.0 --allow-root --no-browser &
echo "Access from a local browser using URL: "
echo "https://123.45.67.890:9999/"
###dockerをコミットする。
このように設定したdockerを
docker commit e839bcb92clc6d user/mydocker:latest
として、コミットします。
Dockerfileとしては、
FROM user/mydocker:latest
MAINTAINER rk
RUN pip install scikit-learn
RUN mkdir /workspace/bin
ENV PATH $PATH:/worksapce/bin
RUN echo $PATH
ADD jupyter_run.sh /workspace/bin
CMD /bin/bash /workspace/bin/jupyter_run.sh
というようにしておく。これを使ってdockerをビルドすればとりあえず完成です。