singularity-pythonは、Singularityコンテナを操作するためのPythonモジュールとコマンドラインツールです。PythonからSingularityを操作してみたかったので、singularity-pythonを使って色々試してみました。また何かやってみたら追記していきます。
追記:singularity-pythonはdeprecatedになるみたいで、今開発中のsingularity-cliが後継になるらしいです。
インストール
pip3 install singularity
python3推奨です。
環境変数
SINGULARITY_PULLFOLDER
: Singularity Hubなどから落としてきたコンテナイメージファイルが保存される場所を設定できます。デフォルトだとカレントディレクトリに保存されます。
pythonでやるなら、こんな感じでしょうか。
import os
singularity_env = os.path.expanduser("~/.singularity/images/")
os.environ["SINGULARITY_PULLFOLDER"] = singularity_env
これで~/.singularity/images/
の中にコンテナイメージファイルが保存されるようになります。
pull
Singularity Hubなどからコンテナイメージを落とします。
from singularity.cli import Singularity
S = Singularity()
container_id = "shub://hogehoge/hogehoge"
image_name = S.pull(container_id)
SINGULARITY_PULLFOLDER
を設定しておくと、指定したディレクトリの中に保存されます。
S.pull(container_id,image_name="hoge.simg")
のようにすると保存されるコンテナイメージファイルの名前を変更する事ができます。
run
コンテナの作成時のレシピファイルに書かれている%runscript
を実行します。
result = S.run(image_name, args="hoge")
print(result)
execute
コンテナ内の環境に存在するコマンドを実行します。
result = S.execute(image_name, "ls")
print(result)