Rの統合開発環境(Integrated Development Environment, IDE)のデファクトスタンダードともいえるRStudioにはサーバー版の RStudio Server が用意されています。RStudio ServerはWebサーバーベースなのでOS環境(プラットフォーム)への依存性が最小限です。イメージ技術と併用することでプラットフォームをクリーンに保ち、環境の共有が楽になるというメリットがあります。ここでは最小限の知識と手間でRStudio Serverの環境を構築する方法を紹介します。
RStudio Server はRStudio Desktopの使い勝手そのままにLinux上のWebサーバーをベースに動くRStudioです。RStudio Serverを使うと
RStudio Desktopが各プラットフォームで抱えている固有の問題を解決することができます。このRStudio Serverを Docker のコンテナ技術を用いることで、Linuxサーバや仮想環境を立ち上げることなくWindows(要Hyper-V)、macOS、Linuxの各プラットフォームのローカル環境上で単一環境のRStudioを実現することができます。
rocker というDockerイメージが公開されています。rockerはベーシックなR単体のイメージをベースに様々なバリエーションが作られています。代表的なイメージは下表の通りです。
| Image | Description |
|---|---|
| rocker/r-ver | Versioned R (Base R) |
| rocker/rstudio | rocker/r-ver + RStudio Server |
| rocker/tidyverse | rocker/rstudio + tidyverse, devtools |
| rocker/verse | rocker/tidyverse + TinyTex + bookdown, rticles, rJava, jdk |
この他に機械学習用のイメージも用意されています。ただし、全てのイメージには日本語ロケールや日本語フォントが含まれていませんので、日本語が必要な場合には追加が必要です。
Dockerはサーバーだけでなくデスクトップ環境でも利用できますので、以降、デスクトップ環境を前提に簡単に説明します。DockerにはCE(Community Edition)とEE(Enterprise Edition)の二つのエディションが存在しますが、ここではフリー版であるDocker CEを用います。CEとEEの違いについては こちら で確認してください。
Dockerのインストールに関しては 公式ドキュメント を参考にしています。
Ubuntuにおけるインストール手順は 公式ドキュメント に記載されています。大まかな手順は以下のようになります。
Docker CEがインストールできましたら。早速、使ってみましょう。例題で使われるHello Worldでは少しつまらないので rocker のrocker/tidyverseを使ってみます。
最初にrocker/tidyverseをpullしますが、環境によってはダウンロードに時間がかかります。
sudo docker pull rocker/tidyverse
ダウンロードとパッケージの解凍が完了したら以下のコマンドでイメージが作成されていることを確認します。
sudo docker images
イメージが確認できたらイメージを以下のコマンドを使って起動します。
sudo docker run -p 8787:8787 -v [host-dir]:[mp] -e PASSWORD=[password] rocker/tidyverse
オプションの詳細は Docker run リファレンス に記載されています。
| Option | オプション概要 |
|---|---|
-e |
環境変数を指定します(この場合はログインパスワードの指定です) |
-d |
イメージをバックグラウンドで起動します(デタッチドモード)が最初は使わない方が動きが分かりやすいと思います |
-p |
公開するポート番号を「ホスト側:イメージ側」の形式で指定します |
--rm |
イメージ終了時に自動的にイメージと関連するファイルシステムなどを削除します(デタッチドモードでは指定できません) |
-v |
ホスト側ディレクトリ(絶対パス)をコンテン側ディレクトリ(絶対パス)にマウントします |
[host-dir] - イメージ環境にマウントしたいホスト側のディレクトリ(絶対パス) [mp] - イメージ側のマウントポイント(絶対パス) rocker/*のイメージはデフォルトユーザがrstudioですので/home/rstudioディレクトリ配下にマウントポイントを作ることをおすゝめします。
[password] - RStudio Serverへのログインパスワード
イメージが起動したらブラウザでlocalhost:8787にアクセスします。 起動状態は以下のコマンドで確認することができます。
sudo docker ps -a
イメージで加えた変更(Rパッケージの追加、RStudioの設定変更)はイメージを終了させると破棄されてしまいます。変更を保存するにはdocker commitコマンドを利用してイメージを保存してください。IDはdocker ps -aコマンドで確認します。
sudo docker commit -m "Comment" ID rocker/tidyverse
Tokyo.Rの有志によるrocker/tidyverseの日本語対応のイメージが tokyor/rstudio で公開されていますが、残念ながらこの1年程更新がなく、Rのバージョンが3.4.3で止まっています。日本語対応のrockerが欲しい場合には公開されている Dockerfile を利用してローカルビルドすることにより日本語対応のrockerイメージを作成してください。
rocker/tidyverseをベースとして日本語が使えるようにするには以下のようなDockerfileを作成します。
# ベースとするイメージ(任意のrocker/*に変更可能です)
FROM rocker/tidyverse:latest
# OS環境(rockerはdebianベース)に日本語ロケールを追加し切り替えます
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
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"
RUN /bin/bash -c "source /etc/default/locale"
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# 日本語フォントをインストールします
RUN apt-get update && apt-get install -y \
fonts-ipaexfont \
fonts-noto-cjk
Dockerfikeの準備ができましたら以下のコマンドで、イメージをビルドします。
sudo docker build -f [dockerfile] -t [containername] .
| Option | オプション概要 |
|---|---|
-f |
Dockerfileを明示的に指定します |
-t |
作成するイメージ名を指定します |
ビルドが完了しましたら、sudo docker runコマンドでイメージを起動してみましょう。引数は前述の通りです。
CC BY-NC-SA 4.0 , Sampo Suzuki [2019-05-10(JST)]