Apptainer
- Docker のようなもの。
- 管理者権限なしで実行できるので一般ユーザーに使わせやすい。
- ホスト機のファイル読み書きもデフォルトでやりやすい。
- イメージはOCI形式ではなくSIF形式。
拡張子は
.sifが標準的で.simgも無印も見かける。
SingularityだったものがLinux Foundationへの移管に伴って改名。 紛らわしいことにSylabs社がSingularity CEと称しているforkはとりあえず無視。
Admin
https://apptainer.org/docs/admin/latest/
Installation
https://apptainer.org/docs/admin/latest/installation.html
Linux
sudo add-apt-repository -y ppa:apptainer/ppa
sudo apt update
sudo apt install -y apptainer
setuid版というのはかなり古いkernel向けっぽいのでとりあえず無視。
Mac
kernelが違うのでネイティブには動かない。 今のところDocker Desktop的なものも無いので自分で仮想環境を用意する必要があるらしい。
Configuration
https://apptainer.org/docs/admin/latest/configfiles.html
apptainer help
apptainer version
apptainer buildcfg
apptainer remote list
/etc/singularity や /usr/local/etc/singularity が残ってると怒られるので消す。
singularity コマンドは互換性のためのエイリアスとしてしばらく提供されるっぽいけど。
User
https://apptainer.org/docs/user/latest/
CLI
https://apptainer.org/docs/user/latest/cli.html
pullapptainer pull [pull options...] [output file] <URI>- SIFイメージをダウンロードする。
OCIイメージだったら
buildを呼んでSIFに変換する。 e.g.,apptainer pull docker://alpineするとalpine_latest.sifができる。 execapptainer exec [exec options...] <container> <command>- コマンドを実行する。
- container引数にはSIFファイルへのパスを渡せる。
docker execとの違い:- containerが先に走っている必要はない。
--rmも不要。 --mount無しでも/home/$USER,/tmp,$PWDがbindされる。-it無しでも自然な入出力。
- containerが先に走っている必要はない。
run- container内のrunscriptを実行する。
runscriptは
/apptainer(/singularity) に置かれたシェルスクリプトで、execと同様にコマンドを実行できるようになっていることが多そう。 shell- container内でシェルを起動する。
execやrunでbashするのとどう違うか?
Repositories
docker://- Docker向けregistryからpullしてSIFに変換。 まともなSIF registryが見当たらない現状では結局これが楽ちん。
shub://Singularity Hub- 2021-04 に凍結。 DataLad に引き継がれた既存イメージはpullできるらしい。
library://Sylabs Singularity library- Apptainerデフォルトではオフ。