Posted at

Dockerで作るJupyter Notebook開発環境

More than 1 year has passed since last update.

研究室リモートサーバ上に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を使うには大きいファイルのやりとり




さいごに

かなりざっくりとしたまとめになってしまいましたが,こうした環境を用意しておくとかなり便利です。