DockerでRStudioとJupyter環境を共存させる
Docker本当に楽。
研究室にグローバルIPを振った上で、中に置いてあるワークステーション2台にJupyter、RStudio、SAS Studioを入れて外部から触れるようにしようと画策している。
Jupyter環境の構築は先日の稿でも述べた通り。述べた通りとは言っても詰まる所走らせるべきコマンドは
$ docker run -d -p 8888:8888 -v ~/myJupyter:/home/jovyan/work --name jupy jupyter/datascience-notebook start-notebook.sh
くらいなのだが。(ちなみにコンテナには–nameオプションで名前をつけておいた方がいい。ここではjupyだが、あとでdocker restart jupyとかでサクッとコンテナの再起動ができるので楽)
もともと前職ではAWS上に自分のJupyterと共用のRStudioをあててポート番号でアクセスを振っていた。そこで同じことをオンプレミスでやることにした。
$ docker run -d -p 8787:8787 -e PASSWORD=<PASS> -v ~/myRStudio:/home/rstudio/work --name rst rocker/rstudio
Rは好きではないので本当は使うつもりもないのだが、必要な時に環境がないと困るので作るだけ作っておく。RStudioの場合は-eオプションでパスワードを指定しないとそもそもコンテナが立ち上がらない。というか立ち上がっても一瞬でexitする。(NB: Setting a password is now REQUIRED.)
パスワードだけ指定した場合にはユーザーIDはrstudioになる。昔のデフォルトパスワードの頃には普通だった同名パスワード(rstudio)は不可。
立ち上がったかどうかは
$ docker ps
あたりで確認すればよい。
ちなみにexitした場合には
$ docker logs <container_ID>
でログを読めばよい。
またrocker/rstudio系のコンテナを使う場合には、RStudioはポート番号を8787に指定しないといけない。
これでJupyterとRStudioそれぞれに
https://localhost:8888/
https://localhost:8787/
でアクセスできるようになる。
流石にワークステーション1台にSAS Studioの環境も作るのは馬鹿なので(作ることは別に難しくはないが計算資源の観点から現実的ではない)、別で用意したワークステーション上にSAS Studioを構築した上で、ルータにグローバルIPを当ててポート番号(8080, 8787, 8888)に従って各サービスにアクセスを振る形で組むつもりでいる。
(大学の情シスに提出した構成案、よく見ると色々と間違っている)
ちなみにここまで長く書いたものの、長期的な運用を想定したシステム構築にはちゃんとdocker-composeに記述すべきである。