目的
オフライン環境下でバイオインフォマティクス解析を行うときの備忘録。
今回はR環境とその環境で動くPackageをインストールしたので、その時の状況で記す。
必要なもの
- インターネットにつながるPC(開放環境)
- Dockerインストール済み
- Mac (10.15.7)
- 閉鎖環境
- singularityインストール済み
- Linux系マシン
方法
1. 開放環境(Mac)でdocker image作成
1-1. RStudio Serverを起動
# Base imageとなるrocker/tidyverseをpull
docker pull rocker/tidyverse:latest
# とりあえず立ち上げる
docker run --rm -p 8787:8787 -v (MacのマウントしたいDir):/home/rstudio/var rocker/tidyverse
1-2. 起動したRStudio Serverにアクセス
localhost:8787からRStudio Serverにアクセスする。
Username, Passwordはいずれも「rstudio」でOK
(追記)The password is set to "xxxxxxxxx"
とターミナルに表示されるので、Passwordは表示されたものを使う
1-3. 必要なパッケージをインストール
1-4. 別のターミナルからdocker imageをcommit
# idを確認
docker ps
# commit
docker commit docker_id hogehoge:latest
1-5. USBにdocker imageを出力
docker save hogehoge -o USB/path/hogehoge.tar
2. 閉鎖環境で.sif作成
2-1. USB経由で閉鎖環境にhogehoge.tarを入れる
2-2. singularityで.sifを作成
# ~/docker_images/hogehoge.tarを基に、~/singularity/hogehoge.sifを作成
singularity build singularity/hogehoge.sif docker-archive:docker_images/hogehoge.tar
3. singularityで実行
# 共有ディレクトリ(/Data)をマウントした状態で実行する
singularity shell --bind /Data:Data singularity/hogehoge.sif
その他
- 誰かに環境を渡すときは、2で作成したhogehoge.sifをそのまま渡せばOK
- RStudio Serverは閉鎖環境では動かなかった(おそらくジョブシステムとか、Port制限が原因)
- Rと使いたかったPackagesは使えたのでOK(CUIでの作業になるからちょっと使いにくいけど)
- sifファイルへの変換をMacでそのままやろうとしたが、うまくいかなかった。Macでbuildするには、Remote builderを使ったり、VirtualBoxとVagrantをインストールしたりする必要があるらしい(リンク)ので、閉鎖環境でbuildした。Macではなく、dockerとsingularityいれたLinuxマシンで構築すれば、docker → singularity → 閉鎖環境へとできるはず(docker挟む意味もあんまりないかも...)
- docker commitのときに、ENTYPOINTが変更されて少し躓いた。rocker/tidyverseではENTYPOINTが
/init
になっていたが、これがbash
に変更されてしまっていたようだった。docker run --rm -p 8787:8787 hogehoge /init
した状態で再度commitすることで解決した。もっとスマートな方法が多分あると思う(が解決したのでOK) - ちなみにdockerのENTYPOINTは、
docker inspect rocker/tidyverse --format='{{.Config.Cmd}}'
で確認した。