9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SingularityでDockerコンテナを使いたい

Posted at

概要

dockerイメージを変換してSingularityのコンテナを作る

やったこと

  • singularityのインストール
  • docker hub上のdockerイメージを使ってコンテナをビルド
  • ローカルのdockerイメージを使ってコンテナをビルド
  • コンテナ上でgpuを使えるようにする

環境

  • OS:Ubuntu18.04LTS
  • GPU:nvidia Quadro P2000
  • nvidiaドライバインストール済み

インストール

このページ通りにインストール
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
Fri Dec 20 20:37:42 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro P2000        Off  | 00000000:01:00.0 Off |                  N/A |
| 46%   33C    P8     4W /  75W |     17MiB /  5059MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1977      G   /usr/lib/xorg/Xorg                             9MiB |
|    0      2457      G   /usr/bin/gnome-shell                           5MiB |
+-----------------------------------------------------------------------------+

表示されれば成功

shellを起動

$ singularity shell --nv cuda10cu7.sif
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?