Singularity インストール・dockerイメージをSingurarity用に変換したい

Singularity

Singularityのコンテナをdockerイメージを変換して作りたかったので
Singularityのインストールの仕方と
docker hubを使ってビルド,ローカルのdockerイメージを使ってビルドの方法をメモしておく

環境

インストール

このページ通りにインストール
https://github.com/sylabs/singularity/blob/master/INSTALL.md

システムの依存関係インストール

$ sudo apt-get update  
$ sudo apt-get install -y build-essential \  
  libssl-dev uuid-dev libseccomp-dev \  
  pkg-config squashfs-tools cryptsetup  

go をインストール&環境変数設定

$ export VERSION=1.13.3 OS=linux ARCH=amd64  # change this as you need  
$ wget -O /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz https://dl.google.com/go/go${VERSION}.${OS}-${ARCH}.tar.gz && \  
  sudo tar -C /usr/local -xzf /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz  
$ echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \  
  echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \  
  source ~/.bashrc  

オプション:golangci-lintをインストール おすすめらしい

$ curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh |  
  sh -s -- -b $(go env GOPATH)/bin v1.15.0  

リポジトリをコピー

$ mkdir -p ${GOPATH}/src/github.com/sylabs  
$ cd ${GOPATH}/src/github.com/sylabs  
$ git clone https://github.com/sylabs/singularity.git  
$ cd singularity  
$ git checkout v3.5.1  

Singularityのインストール

$ cd ${GOPATH}/src/github.com/sylabs/singularity  
$ ./mconfig   
$ cd ./builddir   
$ make   
$ sudo make install  
$ singularity version  

でバージョンが表示されれば成功

dockerコンテナからビルド

docker hubで検索して場所を探す

例: https://hub.docker.com/r/rogerchen/cuda10.0-cudnn7-py3.6 を使う

$ singularity build cuda10cu7.sif docker://fangchen1988/cuda10.0-cudnn7-py3.6  

ローカルdockerファイルをSingularityに変換方法

dockerイメージ一覧

$ docker images  
REPOSITORY                      TAG                      IMAGE ID            CREATED             SIZE  
hello-world                     latest                   aaa111a11aa1        11 months ago       1.84kB  
$ sudo singularity build hello-singularity.sif docker-daemon://hello-world:latest  

hello-singularity.sifは作りたいコンテナの名前
hello-worldは変換したいローカルのdockerイメージの名前

コンテナを起動しnividia-smiを実行

--nv オプションでgpuを使えるようにする

$ singularity exec --nv cuda10cu7.sif nvidia-smi  

shellを起動

$ singularity shell --nv cuda10cu7.sif