Jupyter Notebook on Docker でvim_bindingを使う

  • Vimが好き!
  • GUIからプログラミングしたい!
  • でもパソコン上にインストールするソフトウェアは最小限にして、キレイな状態を保ちたい!

そんなみなさま向けの投稿です。

本記事では、Docker上に構築したJupyter Notebookで、vim_bindingを有効化するまでの手順を示します。

Docker のインストール

docker.comの公式資料(About Docker CE)を参考に、Docker CEをインストールします。
Mac、Windows、Linux環境毎に手順が記載されていますので、環境に合わせてインストールして下さい。
手順に従いDocker CEをインストールし、以下のコマンドでhello-worldを表示出来ればDockerのインストールは完了です。

dozono@:~$ sudo docker container run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 

For more examples and ideas, visit:
 

dozono@:~$ 

※ 筆者はUbuntu 18.10を使用していますので、以後のコマンドはUbuntu 18.10における操作を示します。コマンドは環境に合わせて適宜読み替えて下さい。

Docker イメージ の Build(作成)

Jupyter Notebookを含むDocker ImageをBuild(作成)します。
好きな名前で空ディレクトリを作成し、ディレクトリに移動します。

$ mkdir work
$ cd work/

作成したディレクトリ内にDockerfileという名前でファイルを作成し、ファイル内に以下を記述します。

FROM jupyter/minimal-notebook:latest

USER $NB_USER

RUN pip install jupyter_contrib_nbextensions && \
    jupyter contrib nbextension install --user && \
    git clone https://github.com/lambdalisue/jupyter-vim-binding /home/jovyan/.local/share/jupyter/nbextensions/vim_binding && \
    jupyter nbextension enable vim_binding/vim_binding

次のコマンドを実行してDocker Image を Build します。

dozono@:work$ sudo docker image build -t jupyter-w-vim .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM jupyter/minimal-notebook:latest
 ---> 27f153e8fba3
Step 2/3 : USER $NB_USER
 ---> Using cache
 ---> e32930b82c17
Step 3/3 :

<中略>

Successfully built 972e74f950e4
Successfully tagged jupyter-w-vim:latest
dozono@:work$

Docker コンテナの起動

次のコマンドを実行して Docker コンテナを起動します。

dozono@:work$ sudo docker container run -p 8888:8888 -v ~/jupyter:/home/jovyan/jupyter -d --name jupyter-w-vim jupyter-w-vim
c5e71b15db9482da0aa9886871a7b9e4ee7f6b972820cd871acceba46f00e4d8
dozono@:work$ 

Jupyter Notebookにアクセスするためのトークンを取得します。

dozono@:work$ sudo docker container exec jupyter-w-vim jupyter notebook list
Currently running servers:
http://0.0.0.0:8888/?token=427446746d52a6753c8c36beadff299b0daffc14b8de73db :: /home/jovyan

dozono@:work$ 

※ 本出力例では、427446746d52a6753c8c36beadff299b0daffc14b8de73dbがJupyter Notebookにアクセスするためのトークン、http://0.0.0.0:8888/がJupyter NotebookのURLとなります。

ブラウザからJupyter NotebookのURLへアクセスします。

Password or token :の欄に、先程取得したトークンを入力してログインボタンを押します。
接続したJupyter Notebookではvim_bindingが有効化されています。

Enjoy vim_binding!!

良いVimライフをお過ごし下さい。