1. Singularity?
コンテナ技術の一種だそうで、Dockerと比較してroot権限が不要な点に特徴があるようです。
とりあえず使ってみた点を雑にメモしておきます。(個人用です)
- 参考
- https://docs.sylabs.io/guides/3.10/user-guide/
- https://github.com/sylabs/singularity/blob/release-3.10/INSTALL.md
- https://qiita.com/mkt3/items/b9f86f5ddf9eb0f43608
- http://www.hpc.cmc.osaka-u.ac.jp/wp-content/uploads/2021/09/20211021.pdf
- https://abci.ai/ja/how_to_use/data/ABCI-MiniCamp_Singularity_202105.pdf
2. インストール
環境は下記。
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
パッケージ類をインストール。
$ sudo yum groupinstall -y 'Development Tools'
$ sudo yum install -y \
libseccomp-devel \
glib2-devel \
squashfs-tools \
cryptsetup \
runc
Goをインストール。
$ export VERSION=1.18.2 OS=linux ARCH=amd64
# /tmpにダウンロード
$ wget -O /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz https://dl.google.com/go/go${VERSION}.${OS}-${ARCH}.tar.gz
# /usr/localに解凍
$ sudo tar -C /usr/local -xzf /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz
# 環境変数に追加
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
$ source ~/.bashrc
Singularityのインストール。
# リポジトリをclone
$ git clone --recurse-submodules https://github.com/sylabs/singularity.git
$ cd singularity
# コンパイル
$ ./mconfig
$ make -C builddir
$ sudo make -C builddir install
# バージョン確認
$ singularity --version
WARN[0000] Failed to decode the keys ["storage.options.override_kernel_check"] from "/etc/containers/storage.conf".
singularity-ce version 3.10.0+65-gbf1afa7
WARNINGは不明だがインストールはされている模様。
3. コンテナのビルド
Singularity Hub/Docker Hubからコンテナを指定してビルドすることもできるそうだが、カスタマイズしやすそうなSingularity定義ファイルからのビルドを試してみる。Singularity定義ファイル(*.def)はDockerでいうDockerfileのようなものらしい。Bootstrapにdockerと指定するとdockerイメージを使用できるとのこと。
singularity_centos7.def
Bootstrap: docker
From:centos:centos7
%post
yum update -y
以下のようにビルド。(ビルド時にはroot権限が必要なようだがfakerootというオプションもあるようだ)
$ sudo -s
# singularity build singularity_centos7.sif singularity_centos7.def
4. コンテナに入ってみる
$ singularity shell singularity_centos7.sif
ホームディレクトリがマウントされるのか...
dockerとの違いは以下も参考になりそう。
https://tmyoda.hatenablog.com/entry/20200817/1597663325