・お題:すごい人たちは、コンテナというもので仮想環境を作ってうまいこと解析を回しているらしい。apptainerというソフトが計算科学の分野でよく使われるらしいので、これでR studio serverを立ててみたい。
・前置き(言い訳)として、私はズブの素人なので、間違っていても生暖かく見守ってほしい。
・コンテナといえばdockerが有名だけれど、計算科学の分野ではsingularityというソフトがよく用いられており、singularityが諸般の事情でapptainerになったらしい。dockerが一番情報量が多く、多数のイメージも公開されている。Apptainerはdockerイメージをそのまま流用できるだけではなく、非特権ユーザーでも安全にコンテナを実行できたり、ホストディレクトリにアクセスしやすかったり、コンテナを配布しやすかったりといろいろ使い勝手が良いらしい。
・今回は、apptainerをインストールし、dockerイメージのrocker/verseというのを使ってapptainerイメージを作成して、apptainerイメージからR studio serverを起動してみる。
・apptainerのインストールは、以下の公式サイトを参考にした。私はubuntuだった。今思えば、この時点でなにかミスっていたのかもしれない。。
・apptainerが入ったら、rocker/verseからapptainerイメージ(sifファイル)を作成する。
rocker/verseに関しては以下を参照
https://hub.docker.com/r/rocker/verse
イメージをpullする方法は以下を参照
・今回はrocker/verseを使ったので、イメージをちょっと変え、以下のコマンドでpullした(verse_latest.sifができた)。ちなみに、singularityのところはapptainerが動くので、apptainerと入力してもOK。
singularity pull docker://rocker/verse
・次に、マウント先のフォルダ・ファイルをホストに作成する。ブログの仕様で、バックスラッシュが円マークになっていてしまったが、本当はバックスラッシュ。
mkdir -p run var-lib-rstudio-server
printf 'provider=sqlite\ndirectory=/var/lib/rstudio-server\n' > database.conf
・次に、パスワード設定するバージョンで、sifからR studio serverを起動してみた。
PASSWORD='xxxx' singularity exec \
--bind run:/run,var-lib-rstudio-server:/var/lib/rstudio-server,database.conf:/etc/rstudio/database.conf \
verse_latest.sif \
/usr/lib/rstudio-server/bin/rserver --auth-none=0 --auth-pam-helper-path=pam-helper --server-user=choron
・すると、2つエラーが出てきた。全体は長いので、一部を抜粋。
ERROR Could not find details for server user 'choron'
ERROR system error 2 (No such file or directory)
・要はユーザーが見つからないらしい。困った。。どうすればよいかしばらく調べたが、QAサイトで同様の例が報告されているものの、解決策がよくわからない。仕方がないので、ホストのユーザー情報を、コンテナのユーザー情報にマウントしてみた。
PASSWORD='xxxx' singularity exec \
--bind /etc/passwd:/etc/passwd,/etc/group:/etc/group,run:/run,var-lib-rstudio-server:/var/lib/rstudio-server,database.conf:/etc/rstudio/database.conf \
verse.sif \
/usr/lib/rstudio-server/bin/rserver --auth-none=0 --auth-pam-helper-path=pam-helper --server-user=choron
・すると、以下の表示がterminal中に出てきた。
・localhost:8787にブラウザからアクセスしたところ、ログイン画面が起動した。
・ログインすると、見慣れた画面が出てきた。
・まだまだエラーが出まくると思われるが、とりあえず起動したっぽい。なにか根本的なところでミスをしていそうな気がしてならない。。
おわり