Jupyter Notebookが使いたくて、DockerでJupyterLabを立ち上げる。rocker/binderが便利だった

2025-04-11

※当ブログでは商品・サービスのリンク先にプロモーションを含みます。

Pythonで統計処理をするためにJupyter Notebookを使いたくなり、どうせならDockerで立ち上げてやることにした。

やり方はいくつかありそうだったけど、最終的に私がたどり着いた方法を紹介する。

rocker/binderをベースにして作ることにする

dockerイメージでチョイスしたのは、rocker/binderだ。

Rocker Projectが作成しているイメージで、rockerをベースにJupyterLabを追加しているらしい。新しいキーワードが増えてきたぞ。

まず、Rocker Projectだが、そちらで開発されているdockerイメージ rocker はR Studioを立ち上げるときに使ったことがある。このサーバーは今でも稼働していて、安定して使えていると思う。

そんなRocker Projectでメンテしているものなら品質もよいだろうと期待して、rocker/binderを使うことにした。

続いて、JupyterLabというのは、公式サイトProject Jupyter曰く、

A Next-Generation Notebook Interface

だそうだ。

Jupyter Notebookを使うなら、これを使っておけってことなんだろう。

といったことが調べているうちにわかってきたので、rocker/binderを使ってサーバーを作ることにした。

Dockerfileを作る

Rocker Projectの rocker/binderについて紹介しているページによると、あまり考えないで起動したらいいらしい。

docker run --rm -ti -p 8888:8888 rocker/binder

これだけで普通に動く。

ただまあ、日本語ロケールやタイムゾーンを設定してやったりした方が良さそうな感じだったから、rocker/binderをベースにしたDockerfileを作ることにした。

FROM rocker/binder:latest

USER root

# ロケールとタイムゾーンの設定
RUN sed -i '$d' /etc/locale.gen \
  && echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen \
  && locale-gen ja_JP.UTF-8 \
  && /usr/sbin/update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# 日本語環境をインストール
RUN pip install jupyterlab-language-pack-ja-JP

# 必要なライブラリを追加
RUN pip install numpy pandas

# 日本語フォントをインストール
RUN apt-get update && apt-get install -y \
  fonts-ipaexfont \
  fonts-noto-cjk

# Jupyter Labのデフォルトユーザー jovyan にする
USER jovyan

本当に必要になるのかはまだわからないが、日本語フォントなども入れておく。少なくとも、R Studioを作ったときはあった方がよかった。

途中で pip install しているのは、JupyterLabのインタフェースを日本語化するものや、統計処理に必要な numpy や pandas といったライブラリだ。この辺は使っているうちに、用途に合わせて変えていけばいいだろう。

ここでインストールしなくても、コンテナを作ったあとに入れることもできるしね。

Docker composeでビルド & 起動

あとはこのDockerfileでコンテナを作って起動するために、docker-compose.ymlを作る。

services:
  binder:
    build:
      dockerfile: Dockerfile
    restart: always
    volumes:
      - ./rstudio:/home/rstudio
      - ./jovyan/work:/home/jovyan/work
    ports:
      - 8888:8888
    environment:
      JUPYTER_TOKEN: passwordmuzukashi

別に docker compose で作るほどでもないのかもしれないけど、私としては後々「このコンテナはどういう設定だったっけ?」とか思うくらいならスクリプトにしておいた方が便利かな、と思って docker compose で運用している。再現性もあるし。

volumesはどこをマウントしてやったらいいかまだわかってないので手探りだ。

JUPYTER_TOKENを設定しておくと、ログインするときにこの値をパスワードとして使える。Rocker Projectのページにも記載のある設定項目だ。インターネット上にさらすなら、起動時に発行されるtokenを自分で拾って使う方がよりセキュアかもしれないが、ローカルネットワーク内で動かすだけだし、運用上はこの方が便利かな。

ここまでできたら、Docker composeでコンテナをビルドして起動しよう。

docker compose up -d

うまく行けば、portで指定しているポートを使ってアクセスできる。ブラウザでURLを打ち込んで・・・

http://localhost:8888

ログイン画面が表示されたら成功だ。

JupyterLab ログイン画面

「Password or token」の欄にJUPYTER_TOKENで設定した文字列を入力し、「Log in」をクリック。

JupyterLab

できた!これがJupyterLabの画面かぁ。

メニューの日本語化がちゃんと適用されている。一部メニューは英語のままなところがあって、完全に日本語対応できているわけではなさそうだ。

画面を見ていると、いろいろな機能があるらしい。Notebook以外にもアレコレできそうだ。

上部メニューの 「ヘルプ > JupyterLabについて」をクリックすると、バージョン情報など見れた。

JupyterLabについて

Jupyter Notebookを起動

ようやくJupyter Notebookを起動できる。JupyterLabの右ペイン上部の「Notebook」にある「Python 3 (ipykernel)」というアイコンをクリックしよう。

Jupyter Notebook

うん。いい感じだ。これでちょいちょいPythonプログラムを試すことができそうだ。

JupyterLabの細かいところはまだまだよくわかってないけど、ひとまずNotebookが使えるようになったからこれでよしとしよう。細かいところは必要に応じて使っていくべし。

おわりに

Jupyter Notebookを使うために、Dockerコンテナを作ってみた。

rocker/binderを使ったら、いい感じでJupyterLab環境を作ることができた。

こうして簡単に環境が作れるのがDockerの便利なところだ。

早速、ポチポチとPythonプログラムを打ち込んで遊んでみるとしよう。

こちらの記事もどうぞ!

学術活動

Posted by junchan