コンテナ型仮想化
ホスト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://{ユーザー名}/{レポジトリ名}:{タグ名}