コンテナ型仮想化

ホストOS上にコンテナという仮想環境を構築して、その中で
アプリケーションを実行します。

Docker

コンテナ型仮想化を実装したオープンソースソフトウェアです。
Dockerについては https://www.docker.com/ を参考にしてください。

Singularity

SingularityもDockerと同じようなコンテナプラットフォームです。
HPC環境用に作られています。
SHIROKANEでのSingularityについては https://supcom.hgc.jp/internal/mediawiki/Singularity を参考にしてください。
Singularityについては https://sylabs.io/guides/3.0/user-guide/quick_start.html を参考にしてください。

イメージファイルの作り方

1. Docker Desktop on Mac with intel chip

Dockerをインストールします。

2. Singularity

Docker上でDockerfileからSingularityを構築します。

Singularity構築のためのDockerfileは
/home/kks_th/CaGMeJ_git/SRC/v8/singularity/Dockerfile
にあります。

3. docker build

docker build コマンドでDockerfileからイメージをビルドします。
(base) username@MacBook-Pro ~ %docker build -t IMAGE_NAME .
/home/kks_th/CaGMeJ_git/SRC/v8/singularity直下の
sequenza, msisensor, genomon, genomon_r, itd, multiqc, ngscheckmate, facets, cnvkit, mimcall, chord, gatk, deseq2, hyperclust, cgpPindelのディレクトリに
Dockerfileがあります。

4. docker save

docker save コマンドでIMAGE IDからtarファイルを作成します。
(base) username@MacBook-Pro ~ %docker save -o IMAGE_NAME.tar IMAGE_ID

5. singularity build

2で用意したsingularity環境を起動してsifファイルを作成します。
(base) username@MacBook-Pro ~ %docker run --privileged --rm -it -v output_dir:output_dir singularity_IMAGE_NAME
root@9c718274fdb: cd output_dir
root@9c718274fdb: singularity build IMAGE_NAME.sif docker-archive://IMAGE_NAME.tar

Note

SINGULARITY_BINDPATH

export SINGULARITY_BINDPATH=/cshare1,/rshare1,/home,/share
のように固定で設定しているので
メンテナンスなどでファイルシステムが変更されていないかチェックしてください。

M1 Macでのビルド

上記の方法ではM1 Macを使った場合、SHIROKANE 用のイメージファイルを作成できない場合があります。
Docker Hub 経由でイメージファイルを作成する方法を記載します。

1. ログイン

Docker Hubのアカウントを作成して、Docker Desktop for Mac with Apple silicon にサインインします。

2. docker build

Dockerfileを作成するとき以下のようにplatformについて記載します。
FROM --platform=linux/x86_64 {イメージ名}
docker build します。
(base) username@MacBook-Pro ~ %docker build -t IMAGE_NAME .

3. docker tag

Docker Hubで公開レポジトリを作成します。
公開レポジトリと同じ名前をDockerイメージにつけます
(base) username@MacBook-Pro ~ %docker tag  {イメージID} {ユーザー名}/{レポジトリ名}:{タグ名}

4. docker push

DockerイメージをDocker Hub にpushします。
(base) username@MacBook-Pro ~ %docker push {ユーザー名}/{レポジトリ名}:{タグ名}

5. singularity pull

SHIROKANE 上でpullします。
[username@gc016 ~]$singularity pull docker://{ユーザー名}/{レポジトリ名}:{タグ名}