2020.6.15 大嶋
はじめに
実験データを解析する際、いくつかの解析ツールを決まった順番(パイプライン)で実行する場面はよくあります。そのような解析パイプラインをDockerイメージにまとめることで、どのサーバにも誰のPCにも、同じ環境のパイプラインを簡単に構築する事が可能になります。
【本記事の対象者】 PCやサーバのコマンドラインから、解析ツールを実行してデータ解析をされている方。または、そのような作業を行う研究室の方。
【目的】 データ解析パイプラインを扱いやすくする方法のご提案
【本記事で触れない事】 具体的なコマンドの解説
Dockerを利用するメリット
Dockerは、PCやサーバマシン(以下、ホストマシン)上に、ホストOSとは独立した仮想的な環境を構築するソフトウェアです。オープンソースで自由に利用できます。仮想環境は“イメージ”とよばれる単位のデータとして扱われます。このイメージを用いて、同じ環境を他のPCやサーバに再現できます。
データ解析パイプラインをDockerイメージ化する事のメリットは次の4点です。
- 必要なものはDockerのみ
Dockerさえインストールされていれば、ホストマシンのOSにかかわらず、WindowsのPCであってもLinuxのサーバマシンであっても、パイプラインの実行が可能です。各解析ツールが依存しているソフトウェアやライブラリの事を考える必要はありません。 - コマンド1つでワンストップに実行可能
1つのコマンドで、仮想環境の起動 → パイプラインの実行 → 結果をホスト側に出力 → 仮想環境の破棄、までがワンストップに実行されます。 - シンプルなテキストファイルが設計書
Dockerでは、dockerfileという書式のテキストファイルにイメージの構築方法を記述し、それを読み込む事でイメージが構築(ビルド)されます。そのためイメージ自体を残さなくても、このシンプルなテキストファイルを保管しておくだけで、イメージの再ビルドが可能です。(パイプライン内で自作スクリプトを使用する場合は、そのスクリプトファイルも必要です。) - 維持コストをかけず全世界に公開できる
Docker Hubという、Dockerイメージの公開・共有ができるサービスがあります。自身の作成したイメージを一般に公開したい場合、公開用のサーバを自分で準備する必要がありません。Docker Hubは無料で利用できます。
具体的なパイプライン構築の例
実際にお客様からのご相談に対し、弊社で構築させて頂いたDockerイメージの一例をご紹介します。
【ご相談内容】
研究室で使用されている解析パイプラインを誰かに引き継ぐ際、解析ツールが依存するソフトやライブラリのインストールに手間がかかる。コンピュータや解析ツールに詳しくない人でもすぐにインストールし、実行できるようにしたい。
【弊社の対応】
解析パイプライン全体を1つのDockerイメージに含める事で、コマンド1つで誰でもパイプラインを実行できるようにしました。そしてその際、既存の解析スクリプトには可能な限り手を加えず、Dockerとのやり取りを別のスクリプトに任せるようにしました。これにより、これまでの解析パイプラインと同じ結果が得られるDockerイメージを、低コストで構築する事ができました。
順を追って説明いたします。
- Wrapスクリプト
Dockerイメージからパイプラインを起動した際に最初に実行されます。Dockerに関連するパラメータ等、Dockerへの依存性はこのスクリプトがすべて担当するようにしました。 - 解析スクリプト
データ解析を行うスクリプトの本体です。Wrapスクリプトから自動的に実行されます。ここにはDockerに関連する記述がないため、一般的なLinuxマシン上でもそのまま使用できる内容になっています。 - 解析パイプライン
解析スクリプトから実行される、解析ツール群です。Dockerイメージから仮想環境(コンテナ)を起動すると、これらが既にインストールされている状態のコンテナが立ち上がります。 - ホストマシンとの共有フォルダ
Dockerには、ホストマシンとコンテナの間でフォルダを共有する機能があります。解析結果や中間データをこの共有フォルダに出力すれば、パイプライン終了後に自動的にコンテナを破棄しても、データはホストマシン側に残ります。
最後に
弊社では、お客様が使用されている既存スクリプトやパイプラインのDockerイメージ化を承っております。またその際、パイプラインの効率化のご相談にも対応しております。ご興味のある方はお問い合わせください。