🐳

BiocontainersをSingularityで使いたい

2023/02/09に公開

BioContainersは生命データの解析のためのさまざまなツールを擁したDockerコンテナのコレクションで、開発が終了したソフトを利用したり、自身の解析の再現性を高めるために自由に利用することができます。現在は1000を超えるコンテナが利用可能です。

しかしDockerは実行に管理者権限が必要とされるなど、セキュリティのリスクが懸念されることから、最近Singularityに移行を進めています。そこで、移行の際の備忘録を置いておきます。

M2 MacでSingularityを使う

結論:動きませんでした。

2023年2月9日現在、VirtualBoxのM1/M2対応のDeveloper previewが公開されています。
https://www.virtualbox.org/wiki/Downloads
これをダウンロードし、Homebrewでvm-singularityなどを公式のアナウンスの通りに入れたのですが、VB上でAbortしてしまい原因がわからないため断念。
https://docs.sylabs.io/guides/3.2/user-guide/installation.html#install-on-windows-or-mac
ローカルのMacでDockerコンテナからSingularityコンテナへの変換などができるようにしたかったのですが、当面の間は難しそうです。

LinuxでSingularityを使う

手元での導入は諦め、既にインストールされているサーバー上でDocker HubからpullしてきたコンテナをSingularity用に変換します。

singularity pull  docker://biocontainers/fastxtools:v0.0.14_cv2

上のコマンドを実行するとfastxtools_v0.0.14_cv2.sifというファイルができるので、

singularity run fastxtools_v0.0.14_cv2.sif

とすることでDockerのようにコンテナ内で作業ができます。
この際に、コンテナのタグ名(ここではv0.0.14_cv2)まで正確に記載しないと穴にハマるので注意です。Biocontainersでは特にlatestを入れろといった指定はないらしいので、指定しないと以下のようなエラー・メッセージがでます。
(原因がわかりづらい...)

FATAL: While making image  from  oci  registry: error fetching image  to  cache:  falide  to  get checksum  for docker
Error reading manifest latest in  docker.io/biocontainers/fastxtools:  manifest unknown: manifest unknown

Singularityの便利な点は、完全に切離されているDockerと違い、ローカルのファイルをそのまま参照することができる点です。本体の設定にも依存すると思いますが、基本的には実行時のHOME以下を自動でマウントしています。別の場所にあるファイルにアクセスしたい場合には、bindオプションで指定可能です(詳細未検証)。

--bind /archive/share

おまけ:Singularityのキャッシュなどは~/.singularity/cache以下に保存されるので、気付かない間に肥大化しないように注意が必要そうです。これらの管理には以下のコマンドも利用可能です。

singularity cache list
singularity cache clear

Discussion