この記事は,Stan Advent Calender 2016の二日目の記事です。
※当初この記事はRStudio Advent Calendar 2016の二日目の記事と兼用のつもりでしたが,Qiitaはアドカレの兼用を認めない仕様っぽいので,RStudio分は別に補足記事を立てることにしました。
補足記事→Dockerを利用してRStudio ServerでRStan環境を準備したあと。
要約
tidyverseなパッケージ群,そしてRStanを回すのに使うようなパッケージ群がインストール済みなRStudio Server(日本向け)を,Dockerでさくっと構築しよう。
手順
- Dockerをインストールして使える状態に
- Dockerイメージを取得
- コンテナを作成
- ブラウザでアクセス
これでOKです。
Dockerをインストール
各種プラットフォームによって異なりますので,すみませんがWebで検索してください。情報はたくさんありますので,ここで下手に説明するよりもずっといいかと思います。本家Webサイトはこちらです。
以降,すでにDockerがインストールされたことを前提に進めます。
Dockerイメージを取得
利用するDockerイメージ
今回の記事用に,kazutan/stan-d
というDockerHubリポジトリを作成しました。元のGitHubはこちらです。主な特徴は以下のとおりです:
-
rocker/hadleyverse
(GitHub, DockerHub)をベース -
tokyor/rstudio
(GitHub, DockerHub)に記述してあるDockerfile
を参考に日本語化 - RでStanを実行するために必要なパッケージをインストール
- rstan
- ggmcmc
- rstanarm
- 上記が依存するパッケージ
これをlatest
タグで準備しています(GitHubのmaster
ブランチのDockerfileに記述)。
また,共立出版のWonderful Rシリーズの「StanとRでベイズ統計モデリング」サポートページのREADME下方にある一連のパッケージを組み込んだものも作成しました。これをRStanBook
というタグで準備しています(GitHubのRStanbook
ブランチのDockerfileに記述)。
お好みに応じてどちらかを使うかを選んでおいてください。別に後からinstall.packages("hoge")
でインストールできるのであまり悩まなくても大丈夫です。
イメージを取得
latest
を取得する場合,端末で以下のコマンドを実行してください:
#Ubuntuなどでは`sudo`が必要になります。
$ docker pull kazutan/stan-d:latest
これでローカルにイメージを取得します。最後のコロン以降がDockerHubリポジトリ内のタグ名なので,RStanBook
の場合は差し替えてください。
コンテナの作成
コンテナを作成します。端末で以下のコマンドを実行してください:
#Ubuntuなどでは`sudo`が必要になります。
$ docker run -p 8787:8787 -v (リンクさせたいディレクトリパス):/home/rstudio -d --name (コンテナ名) kazutan/stan-d:latest
必要に応じてオプションなどは変更してください。例えば,手元PCのホームディレクトリとコンテナのホームディレクトリをリンクさせ,コンテナ名を"kosaki"にしたいなら,以下のような感じになります:
#Ubuntuなどでは`sudo`が必要になります。
$ docker run -p 8787:8787 -v ~:/home/rstudio -d --name kosaki kazutan/stan-d:latest
これでコンテナが作成され,RStudio Serverも起動しているはずです。
ブラウザでアクセス
ブラウザを起動し,アドレスバーにlocalhost:8787
と入力してください。RStudio Serverへのログイン画面が表示されますので,ユーザー名をrstudio
,パスワードをrstudio
と入力してください。これでもうOKです。
注意事項
Dockerの基本的な操作について
私はDocker素人なのでそこまで把握していませんが,今回の内容で簡単なメモ書きはDockerHubのリポジトリに記載しています。またプラットフォームによって色々違うことが出てくるかもしれません。今回はUbuntu16.04環境で準備,テストしています。Dockerに関して不明な点はすみませんが詳しい人やWeb検索でおねがいします。
Dockerイメージについて
割とやっつけ(2,3時間)で作ったものなので,後からまた変更する可能性が高いです。その場合はリポジトリのトップなどに書いていきます。あと,これはローカルで実行することを念頭に置いています。またこれらの内容について損害などが発生した場合,私は一切の責任は負いません。ご了承ください。
問い合わせについて
何かありましたら,Twitterの@kazutan
もしくはここのコメント,Dockerfileに関することでしたらGitHubリポジトリのissueにおねがいします。