研究室リモートサーバ上にJupyter Notebook環境を作ったら色々と捗ったのでその紹介です。調べながらやったら色々と詰まったので情報を残しておこうと思います。
捗ったこと
- 研究室リモートサーバの高スペックな計算資源を使える
- Webブラウザ上から簡単にアクセスできる
- よく使うもの(numpyとかmatplotとか)がはじめから入っている
- Dockerとりあえず使ってみたアピールができる
研究室リモートサーバの環境
- Ubuntu 16.04.1 LTS (GNU/Linux 3.13.0-24-generic x86_64)
- グローバルIPが付与されている
Dockerのインストール
まずこのへんを参考にしつつ,UbuntuにDockerをインストールします。また,dockerは一度立ち上げたらその後はWebブラウザから利用するので,
$ sudo docker daemon
などとして,daemonとしてdockerを起動しておきます。
Jupyter Notebookのdocker imageを取得してくる
ここから jupyter/datascience-notebook/ のdockerイメージをpullしてきます。データ解析に必要なものはだいたい入っていていい感じです。
ポートを開ける
jupyter notebookは8888番ポートを使用するので空けておきます。ここで空けるのは動作チェックのためであり,別に8888番ポートである必要はありません。
dockerを起動してみる
docker run -d -p 8888:8888 jupyter/datascience-notebook
とやって起動しましょう。8888ポートに接続して,jupyter notebookが立ち上がっていればOKです。
セキュリティを高めよう
このあたりを参考にしてパスワードの設定をします。こうするとjupyter notebook起動時にパスワードが要求されます。パスワードを設定したらいったん docker commit
しておくとよいですね。
また,SSL接続をできるようにしておくとよいです。上記のも合わせて このあたりを参考にするとHTTPSで通信ができます。オレオレ証明書でもよいですが,let's encryptを使って証明書を発行しておくとよいです。
実際の使用時のコマンド
$ docker run -e GRANT_SUDO=yes -d -p 8888:8888 -v ~/:/home/hoge/fuga/data --user root jupyter/datascience-notebook start-notebook.sh
実際に使う場合には,用意されているシェルスクリプトから起動するのが便利です。
-
-e GRANT_SUDO=yes
- jupyter notebook内で立ち上げたターミナルでsudo権限を使えるようにします
- pipで新たなものを入れるときなど必要です
-
-v ~/:/home/hoge/fuga/data
- docker外とdocker内で共用するディレクトリです
- gitを使うには大きいファイルのやりとり
さいごに
かなりざっくりとしたまとめになってしまいましたが,こうした環境を用意しておくとかなり便利です。