LoginSignup
2
2

More than 3 years have passed since last update.

Singularityでdefファイルをリモートでビルドする方法 (MacOS向け)

Last updated at Posted at 2020-08-29

はじめに

この記事は、HPC向けのコンテナエンジンを非Linux環境(MacOS/Windows)のマシンで使う方向けです。とりわけ、自前でdefファイルを用意し、ビルドしてイメージファイルsifを作りたい方を対象としています。

想定されるのは、

  • Singularity 3.3.0
  • MacOS Calalina 10.15.6

です。上記のケース以外での動作の保証はできませんのでご了承ください。

Remote Buildの方法

HPC向けコンテナエンジンのSingularityで作業を行う際には、イメージファイル(SIF)を配置する必要が生じるケースがあります(参考: https://sc.ddbj.nig.ac.jp/ja/guide/software/singularity

SIFは、自前で用意したDefinition File(def)をビルドすることで得られます。defファイルはDockerでいうところのDockerfileに相当します。自らでカスタマイズした環境でコードを動作させたい場合、defの用意とそのビルドは必須となります。

Linuxであれば、ビルドは、生成するイメージファイルをxxx.sif、ビルドするdefinitionファイルをzzz.defとすれば

$ sudo singularity build xxx.sif zzz.def

で可能です。MaxOSにおいては、ローカル環境でのビルドが(2020年8月時点では)不可能で、直接上の処理を実行すると、

FATAL:   Only remote builds are supported on this platform

と言われてしまいます。リモートのビルドはSylabs CloudのGUIで実行することが可能ですが、コマンドを使ってのremote buildと比較して時間がかかってしまいます。そこで、コマンドのみでリモートビルトを行う方法を紹介します。

まず、Sylabs Cloudにサインインします。Google/GitHub/GitLab/Microsoftのアカウントで入ることができます。

次に、コマンドライン上でリモートログインの設定をします。

$ singularity remote login

を実行し、認証のためにAPI Keyの入力が求められることを確認します。

remote login.jpg

となります。https://cloud.sylabs.io/auth/tokens に移動すると、Access Tokenの生成を求められるので、"Enter Label as an alias of Token"の欄に任意のLabelを入力して、"Create a New Access Token"を実行します。

スクリーンショット 2020-08-29 10.51.51.jpg

しばらくすると生成されたTokenが表示されるので、コピーして先ほどのコマンドラインでの"API Key: "にペーストします。

認証が成功すれば、コマンドラインでのRemote Buildが可能となります。

$ singularity build --remote xxx.sif zzz.def

を実行することで、SylabsのGUIなしでRemote Buildができるようになります。

生成されたSIFをコードを実行する環境に配置することで使えるようになります。一度認証をしてしまえば、これ以降はこのコマンドだけでビルドが可能です。

おわりに

MacOSユーザー向けにdefファイルのビルド方法を扱いました。Windowsでの動作検証等はできておらず、また任意のdefに対して確実にSIFの生成ができるという保証もできません。上で挙げた方法でうまくいかないケース等ありましたらお教えいただけますと幸いです。ご一読いただきありがとうございました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2