Docker

DockerでローカルにJupyterの環境を構築する

特に目新しい話ではないのだけれど。
これまでDockerは使う必要がなかったんだけど、ローカルでJupyter環境を作る必要が出てきたのでせっかくだから。

マシンスペック
iMac (27-inch, late 2013)
OS:macOS High Sierra
CPU:3.5 GHz core i7
RAM:32GB
GPU:NVIDIA GeForce GTX 775M 2048MB

5年前に70万ぐらいかけて買った、当時のiMacとしては相当なスペックだったような気がします。今では見る影もないですが。

取り急ぎDocker for Macを入れる
https://hub.docker.com/editions/community/docker-ce-desktop-mac
インストーラ(といってもただのパッケージ)のダウンロードにあたってはdocker hubへの登録が必要。pkgを開いてApplicationにDocker.appsを移動させたら立ち上げ。
先ほどのID/PWでログインしたらターミナルを立ち上げて

$ docker run hello-world

でHello Worldが走る。
(正確にはhello-worldというDockerイメージを走らせている)

Hello from Docker!
This message shows that your installation appears to be working correctly.

いい感じですね。このコマンドだけで全ての環境構築が済むとすれば相当に便利です。

Docker Hubのjupyter/notebookはいつの間にか消えているので、https://github.com/jupyter/docker-stacksを使います。今回は試しにjupyter/base-notebookを。

$ docker run -p 8888:8888 --name jupy -v ~/jupyter/:/home/jovyan/work jupyter/base-notebook start-notebook.sh

走りました。
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://(260aaf71eb44 or 127.0.0.1):8888/?token=21************************0

通常のJupyterと同様に指示に従ってhttp://127.0.0.1:8888/?token=21************************0をブラウザでひらけば…

追加で必要なパッケージは通常のJupyterと同様にMagic Commandsを使えばそのまま入る。

%pip install ***

せっかくJupyterなので、base-notebookだけ入れておいてその先の環境構築は全部notebookとして残しておくというのもいいんじゃないかな。あんまりにも初めから何でも入っていると環境がぐちゃぐちゃになりそうで嫌というのもあるし。

今回は練習のためMagic Commandsを使わずにDockerのbash環境に入って作業する。

$ docker exec -it jupy /bin/bash
$ jupyter notebook --generate-config
$ jupyter notebook password

この辺で設定とパスワードの設定をしておく。
ついでにJupyter ThemesとNB Extensionsも入れる。

$ pip install jupyter_contrib_nbextensions  jupyter_nbextensions_configurator
$ jupyter contrib nbextension install --user
$ jupyter nbextensions_configurator enable --user

次にJupyterthemes
Jupyterthemesはデザインを格好良くとかというより、デフォルトの文字サイズや色合いだと目が悪すぎてほとんど何も見えないので定形のデザイン設定が決めてある。それも合わせて叩き込む。

$ pip install jupyterthemes
$ jt -t monokai -T -N -ofs 14 -f inconsolata -tfs 13

パスワードの設定もできてExtensionsも入りデザインも修正できた。
最後にbash環境を抜け出してコンテナを再起動。

$ exit
$ docker restart jupy

これでOK