Singularity(Apptainer)を使ってみよう

コンテナ技術は、HPC(高性能計算)や科学技術分野でも広く利用されています。Singularity(最近ではApptainerとして知られています)は、セキュリティやパフォーマンスの観点から研究機関などでも多く使用されています。

このノートでは、Singularityイメージファイルの基本的な扱い方について、簡単にまとめています。

Singularityのインストール

Singularityを使うためには、システムにインストールする必要があります。ほとんどのLinux環境で簡単にインストールできます。公式サイトのインストールガイドに従って、適切に設定しましょう。

イメージファイルを実行する

Singularityのイメージファイルは通常、.sifという拡張子を持っています。イメージを使ってコンテナを実行するには、singularity run コマンドを使用します。このコマンドは、イメージファイル内に設定されたエントリーポイント(デフォルトのプログラム)を起動します。

singularity run my_image.sif

たとえば、イメージにPythonプログラムが含まれている場合、上記のコマンドでPythonプログラムが実行されます。

コンテナ内にシェルを開く

コンテナの環境にインタラクティブにアクセスしたい場合は、singularity shell コマンドを使って、コンテナ内にシェルを開きます。これで、コンテナ内のシステムに対してコマンド操作が可能です。

singularity shell my_image.sif

これにより、ホストシステムのターミナルがコンテナ内部のシェルに切り替わり、そこで操作ができるようになります。

コンテナ内でコマンドを実行する

特定のコマンドをコンテナ内で実行したい場合は、singularity exec を使います。このコマンドを使用すると、イメージ内のプログラムやスクリプトを直接実行できます。

たとえば、Pythonのバージョンを確認するには、次のようにします:

singularity exec my_image.sif python --version

これで、イメージ内のPythonのバージョンが表示されます。ほかのコマンドも同様に実行可能です。

データをコンテナにマウントする

ホストシステムのディレクトリをコンテナ内にマウントしてデータをやり取りしたい場合は、-Bオプションを使用します。このオプションで、ホスト上のディレクトリをコンテナにバインドできます。

singularity exec -B /path/to/host/dir:/path/in/container my_image.sif some_command

ここでは、ホストシステムの/path/to/host/dirをコンテナ内の/path/in/containerにマウントして、コンテナ内からもそのディレクトリにアクセスできるようにしています。

Posted :