2019年8月18日日曜日

Dockerの導入

夏季休業の期間を利用して、以前から使いたかったDockerを導入してみた。Dockerは、Docker社が開発しているプラットフォームで、アプリケーションの単位の仮想環境を作成したり、それを配布したりすることができる(らしい)。技術的な詳細は自分には難しいのだが、いろいろな解説を見ると、普通の仮想化デスクトップが、ゲストのOSを丸ごとホストのOSの上で動かしているのに対し、コンテナ技術では、アプリケーションの単位で仮想環境が作られているらしい。説明の図には、ホストOSの上にDockerのエンジンが乗り、その上にOSではなくbinaries/librariesが乗っている図があり、(情報系の人のような正確な理解じゃないけれど)なんとなく直感的には理解できる。




バイオインフォマティクスの分野でも、BioContainersで解析プログラムがインストールできるようになっており、以前から興味を持っていた。これができれば、十年前に依存環境の問題で何十時間も費やしていた(そして結果的にビルドに失敗した!)時のような地獄から解放されるかもしれない。また、今はそこまでではないが、将来的には論文の投稿時に、解析環境を丸ごと開示するのがデフォルトになるかもしれない。なったら、多分大変だろうが、生物系の研究の再現性を担保するためには、必要な道かもしれないと最近思う(でも、純粋なバイオインフォマティクス系でない研究室にとっては、やはり重荷になると思う、最初は)。

今回は、メインに使っているMacBook Proの環境(i7、16GbRAM)の環境にdocker desktopを導入した。


1TbのSSDを積んでいるが、色々とデータが増えてそこまで余裕はない。もしdockerでアプリケーションをたくさん導入するのであれば、解析の都度使うものをpullしたり、解析が終わったものを環境ごと保存しておくために大きなディスクを持っていた方がいいのかもしれない。この辺りの感覚は、これから使っていきながら掴んでいきたい。

dockerの概要は、webの解説に載っていた。

設定としては、最初なので勝手がわからないが、とりあえずCPUs4、メモリは8Gb、Swapは1Gbとした。負荷の大きい解析には、もう少しメモリ使用量をあげたほうがいいかもしれない(そもそも、linuxのサーバーマシンの方に導入してもっとリソースが割けるようにしたほうがいいだろう。今使っているものは、xeon、96GbRAM)。


手始めに、Parliament2というマッピングの結果からゲノムの構造変異を検出するためのコーラーを導入してみた。導入は非常に簡単で、コマンド一つ(docker pull dnanexus/parliament2 )でプルすることができる。parliament2の説明を見ると、幾つもの異なるコーラーを使い、その結果を統合してくれるようだ。多分、10年前の自分であれば、これらを個別に導入するという段階で、かなり腰が引けていたと思う(そして、相次ぐbuild失敗に際限なく時間が過ぎていき、結果が出ずに、というかそもそも解析が始められずに泣きそうになっていたんじゃないかと思う、技術の進歩すごい)。これから実際の解析に使っていきたい。

試しにいくつかのプログラムがbiocontainersで利用可能になっているか確かめてみた。メジャーなもので対応しているものも多いが、登録されていないものも見つかった。そもそも導入が簡単なものは、dockerを使わないほうが余計なリソースを割かずにすみ良いのだろう。この辺りの見極めをして、良い運用方法を決めていきたい。