強い人の助言大歓迎です。
遺伝研のページだけだと自前で開発したDocker imageをSingularityで使う方法がイマイチ分かり辛かったのでメモしておきます。
バイオインフォの人がDocker学ぶ動機
- とりあえず他人の作ったDockerファイル使ってソフトウェアを動かす、ぐらいは今後やらざるを得ない
- どうせある程度覚えなきゃいけないのなら自前でDocker環境で解析環境作れた方がhappy、ソフトウェアインストールバトルでの勝率がグッと上がる
- 遺伝研スパコンで使えるようになったので覚えるにはいい時期
参考
bio分野向けのDockerコンテナをつくる on MacOSX
Install singularity on Mac
DockerFileの雛形
Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!
これが良さそうだったのでコピペしたが、諸々進めていく中でubuntuの方がいいなとなったのでubuntuに変更した。
現状のメタゲノム解析用に作っているDocker環境は以下のような感じ。
環境
![スクリーンショット 2019-04-22 10.43.47.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F175646%2F98c99fd9-5527-c2be-3f9c-661c78f9a1c7.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=49d3e28f6f0a49dd660eaed8ffb804c5)
-
遺伝研スパコンで使えるのは権限の関係でDockerではなくSingularity。
-
Singularity imageはDocker fileからもビルドできるが、ビルドの権限は遺伝研スパコンでは与えられていないのでlocalでやる必要がある。
-
gitHubとDockerHubを連動させるとgitにpushするだけでclが走りDocker imageが作られるので、それをlocalのvagrant box内でsingularity pullしsingularity imageをビルド。singularityではDockerと違い、ビルドしたイメージがカレントディレクトリに作られるので、それをそのままscpで遺伝研スパコンに送る。
所感
- ソフトウェア開発じゃなくて解析の場合はDocker Imageをどの粒度で作るかとか、並列化はどのレイヤでやるかとか、色々考える余地が多くBest practiceにたどり着く道のりはまぁまぁ長そう。Docker fileを最終的に公開するのかどうかとかでも変わってくると思うので、プロダクトマネジメント力が問われてくる。
- それでもソフトウェアの依存関係の悩みから解放されるメリットは大きいと思う
- また基本的に性格が雑で環境構築/依存関係とか言葉聞くだけでジンマシン出ちゃうよ、というタイプなので、コンテナ環境はその辺の苦しみの仕組みでの対処として最適
- しかしsingularity対応のスパコンまだまだ少ないので、現状ではソフトの悩みから解放される代わりにハード選びに制約受けることにはなりそう