DockerでStanの実行環境を最速で用意しよう:Windows編

こちらは,Stan Advent Calendar 2020 - Qiita13日目の記事です。もう,StanのアドベントではDockerのこと以外を書かないという強い意志をもって,今年も書きます。

Dockerの概要については,以下の記事を参照ください。再現性高く解析環境を素早く用意できるようなサービスと思っておくと良いかと思います。こう書くと「お,Dockerいいじゃん」となりそうですが,あまり心理学で広まっている感じはしません。

ykunisato.github.io

Dockerの利用が少しでも増えるといいかなと思って,色々と普及活動を行ってきましたが,どうも響きません。なんとなく分かってきたのは,Macユーザーだと導入が簡単だけど,Windowsユーザーにとってはちょっと導入が面倒くさいようです(あとはDockerで10GBくらい使うので,ハードディスクに余裕がない場合に導入ができないというのもあるようです...)。そこで,Windowsユーザーのための導入方法を以下に紹介いたします(以下は,日本心理学会第84回大会のチュートリアルワークショップ「今日からできる再現可能な論文執筆」の内容とほぼ同じです)。

Windows10のエディションを確認する(ProかHomeか)

多くの方が,Windows10をお使いだとは思いますが,一般的に使われるWindowsにはProとHomeの2つのエディションがあります。エディションによってDockerの導入方法が異なります。以下の解説動画で,ご自身のパソコンのWindowsがProかHomeのどちらかをご確認ください。

Windows10がProエディションの場合の導入方法

Windows10 Proエディションの方は以下の動画を参考にDockerを導入なさってください。なお,コマンドプロンプトに打ち込むコードについて,動画内で紹介しているものでも動きますが,以下で書いているコードのほうが楽だし上手くいくと思います。

コマンドプロンプトに打ち込むDocker用のコードは以下になります。以下のコードは動画内で口頭で解説しているものとは異なりますが,こちらのほうが簡単かつ上手くいくと思います!(-e DISABLE_AUTH=trueは便利ですが,複数アカウントがある場合は挙動がつかめないのでおすすめしないです)ローカルで,ご自身が所有しているパソコンでの利用を想定しているのでパスワードはpaperに固定しています(気になる場合は改変ください)。

docker run -e PASSWORD=paper -p 8787:8787 -v "%cd%":/home/rstudio -d --name paper ykunisato/paper-r

終わったら,ブラウザのアドレスバーにlocalhost:8787と打ち込んで,出てきたログイン画面のUsernameにrstudio, Passwordにpaper(もしくはご自身で設定したパスワード)をいれてください。普段使っているホームディレクトリがマウントされていると思います。

Windows10がHomeエディションの場合の導入方法

Windows10 Homeエディションの方は以下の動画を参考にDockerを導入なさってください。なお,コマンドプロンプトに打ち込むコードについて,動画内で紹介しているものでも動きますが,以下で書いているコードのほうが楽だし上手くいくと思います。

コマンドプロンプトに打ち込むDocker用のコードは以下になります。以下のコードは動画内で口頭で解説しているものとは異なりますが,こちらのほうが簡単かつ上手くいくと思います!(-e DISABLE_AUTH=trueは便利ですが,複数アカウントがある場合は挙動がつかめないのでおすすめしないです)ローカルで,ご自身が所有しているパソコンでの利用を想定しているのでパスワードはpaperに固定しています(気になる場合は改変ください)。

docker run -e PASSWORD=paper -p 8787:8787 -v "%cd%":/home/rstudio -d --name paper ykunisato/paper-r

終わったら,ブラウザのアドレスバーにlocalhost:8787と打ち込んで,出てきたログイン画面のUsernameにrstudio, Passwordにpaper(もしくはご自身で設定したパスワード)をいれてください。普段使っているホームディレクトリがマウントされていると思います。

Dockerコマンド

コンテナの確認と開始

コンテナの動作確認するには,コマンドプロンプトに以下を打ち込みます。STATUSがUpになっているとコンテナが動いています(再起動後に止まったりしていることがある)。

docker ps -a

もしコンテナが停止している場合は(STATUSがExitedになっている),コマンドプロンプトに以下を打ち込んで,コンテナを開始します。

docker start コンテナ名(上記の場合はpaper)

コンテナの停止と削除,イメージの削除

もうコンテナが不要になったら,停止して削除します。コンテナの停止には,コマンドプロンプトに以下を打ち込みます。

docker stop コンテナ名(上記の場合はpaper)

コンテナの削除には,コマンドプロンプトに以下を打ち込みます。

docker rm コンテナ名(上記の場合はpaper)

rmしてもコンテナが削除されただけでダウンロードしたイメージは残っています。まず,以下をコマンドプロンプトに打ち込んで,イメージの状況を確認します。削除したいイメージのIMAGE IDをコピーします。

docker images

上記でコピーしたIMAGE IDを使って,以下をコマンドプロンプトに打ち込んで,イメージを削除します。

docker rmi IMAGE_ID