Rで始めるDocker生活

eitsupi

2021-04-17 (updated:2021-11-30)

はじめに

@eitsupi

eitsupi

Docker(Linuxコンテナ)を使うメリット

  • 環境構築かんたん。
    • Dockerさえセットアップすればどのマシンでも同じように動く(多分)。
  • 日本語版WindowsでもShift-JISの呪いから解放される。

Rocker project

  • 公式サイト
  • R用のDockerイメージを作成・維持しているプロジェクト。

rocker/r-ver

  • GitHubリポジトリ
  • Rの再現性を重視したDockerイメージで、特別な操作をしなくてもRパッケージのバージョンを固定するようになっています。
  • よく使われているrocker/tidyverseは、rocker/r-verにRStudio Serverとtidyverseをインストールしたもの。

使い方

Dockerが使える状態なら、すぐにRStudioを使い始められます。

rocker/rstudioのOverviewに載っている例。

$ docker run --rm -p 8787:8787 -e PASSWORD=yourpasswordhere rocker/rstudio

再現性 R4.0.0 (1/2)

rocker/r-verはRのバージョンに合った固定されたバージョンのパッケージをインストールします。

試しに以下のようなコマンドでrocker/r-ver:4.0.0(R 4.0.0で固定)上にdplyrパッケージをインストールしてみましょう。

$ docker run --rm -it rocker/r-ver:4.0.0 Rscript -e "install.packages('dplyr')"

再現性 R4.0.0 (2/2)

以下のようにインストールが進行します。

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/291/src/contrib/dplyr_1.0.0.tar.gz'

dplyr1.0.0がインストールされているのが分かります。

再現性 R4.0.4 (1/2)

次に、rocker/r-ver:4.0.4上にdplyrパッケージをインストールしてみましょう。

$ docker run --rm -it rocker/r-ver:4.0.4 Rscript -e "install.packages('dplyr')"

再現性 R4.0.4 (2/2)

trying URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/2021-03-30/src/contrib/dplyr_1.0.5.tar.gz'

今度はdplyr1.0.5がインストールされました。

このように、インストールされているRにあったバージョンのライブラリをインストールするように設定されています。

毎日CRANのスナップショットを保存しそれを提供している、RStudio Package Managerにより実現されています。
毎日のコピーを保存しているなんてすごい!

ソースコードの永続化

  • コンテナ内で行った変更は(良くも悪くも)コンテナ内だけのもの。
  • コンテナ内で作ったファイルをDockerホスト側のディレクトリに残したい場合は-vオプション等で永続化してやる必要があります。

rocker/rstudioのOverviewに載っている例。

$ docker run -d -p 8787:8787 -v $(pwd):/home/rstudio -e PASSWORD=yourpasswordhere rocker/rstudio

RStudio設定の永続化

  • RStudio Serverの設定は~/.config/rstudioに保管されます(※1.4以降)。
  • このディレクトリを永続化してやればコンテナを作り直しても設定が保持される!
  • docker-composeを使うのなら複数のオプション設定もかんたん。
version: '3'
services:
    rstudio:
        image: rockerjp/tidyverse
        environment:
            - PASSWORD=yourpasswordhere
        ports:
            - "8787:8787"
        volumes:
            - ./.rstudio_config:/home/rstudio/.config/rstudio
            - ./work:/home/rstudio/work

おわりに

文字化けで辛くなったとき、
環境設定に疲れたとき、
Linux版のRを試したくなったとき、
もしくは文字化けで辛くなったとき、

Dockerのことを思い出して下さい。