要約

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をビルドすればとりあえず完成です。

广告
将在 10 秒后关闭
bannerAds