1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

singularity-pythonを使ってみた。

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)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?