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
pull
apptainer pull [pull options...] [output file] <URI>
- SIFイメージをダウンロードする。
OCIイメージだったら
build
を呼んでSIFに変換する。 e.g.,apptainer pull docker://alpine
するとalpine_latest.sif
ができる。 exec
apptainer 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デフォルトではオフ。