DockerによるR + JupyterLabの環境構築

概要

Dockerを使ってJupyterLab上でRを実行する環境を構築する方法を紹介します。

前回、DockerによるRStudio Serverの構築方法を紹介しました。

しかし、私は普段Pythonを使うことが多く、開発環境としてはRStudioよりJupyterLabの方が馴染みやすいと感じました。前回と同じようにDockerを使ってR+JupyterLabの開発環境を構築しましたので、その方法を紹介します。

使用するDockerイメージ

DockerイメージとしてはRocker Projectで公開されている rocker/binder を使用します。このイメージの説明は下記のページにあります。

rocker/binder イメージは、前回使用した rocker/tidyverse をベースイメージとして派生したイメージのため、RやRStudio Server、tidyverseパッケージ等も含まれています。そこに地理空間系のパッケージやJupyterが追加されたものになります。

ちなみに、イメージの名前にもなっているBinderとは、GitHub等で公開されたJupyter Notebook ファイル (.ipynb) をWeb上で実行できる環境を提供するサービスのようです。

今回はBinderのサービスは利用しませんが、RとJupyterLabの環境が整ったイメージとして rocker/binder を利用します。

コンテナの起動

docker compose コマンドによりコンテナを起動するため、以下のように compose.yaml を作成します。

services:
  jupyterlab:
    image: rocker/binder
    ports:
      - 8888:8888
    volumes:
      - type: bind
        source: ./rstudio
        target: /home/rstudio
    command:
      /bin/bash
      -c
      "jupyter lab --ip=0.0.0.0 --no-browser --IdentityProvider.token=''"

rocker/binder イメージのデフォルトではJupyterLabではなくJupyter Notebookが起動するようになっています。ここではJupyterLabを使用するため、command オプションにてJupyterLabの起動コマンドを記載しています。
また、セキュリティリスクには留意する必要がありますが、起動コマンドにおいて --IdentityProvider.token='' を指定してブラウザでのアクセス時のトークンの入力を省略しています。

そして、compose.yaml を保存したディレクトリにおいて、docker compose コマンドを実行することでコンテナが起動します。

docker compose up -d

ブラウザからアクセス

コンテナが起動された状態でブラウザから localhost:8888 にアクセスすると、Rが使用可能なJupyterLabが利用できます。

また、上記のNotebookのメニューの中にRStudioという項目もありますが、これをクリックすると、、、

同じ環境でRStudioも利用できます。同じ環境で必要に応じてJupyterLabとRStudioを使い分けられるので便利です。

参考文献