コンテナ技術Singularityで動くrelionを作ってみた.

RelionをRHEL7/8でコンパイルして使っているのだが、ubuntu上で動くrelionを試されたい場合は? 稀有だけどあるみたい
わざわざ現行環境を破棄してOSを入れ替えることもなく、またqemuな仮想基盤を持ち出しすることなくベースのOSはRHEL7/8のままで
Singularityを使えば、ubuntu上で動くrelionを試せる.

下準備

コンテナ内部をroot権限で修正するのでsingularityをrootで動かせる権限が必要です
なのでvisudoであらかじめ調整しておきます

[root@centos7 ~]# visudo
 :
root    ALL=(ALL)       ALL
illya   ALL=(ALL)       /usr/bin/singularity
 :
[root@centos7 ~]#

その後に

ベースとなるコンテナを作る

コンテナにはdockerHUB様由来の nvidia/cuda:11.4.2-devel-ubuntu20.04 を採用した.
https://hub.docker.com/r/nvidia/cuda/tags

っで構築.

[illya@centos7 ~]$ singularity build --sandbox relion docker://nvidia/cuda:11.4.2-devel-ubuntu20.04
[illya@centos7 ~]$ ls -ldF relion
drwxr-xr-x. 18 illya illya 4096 Jan  1 18:40 relion/
 
[illya@centos7 ~]$ du -hs ./relion
4.9G    ./relion
[illya@centos7 ~]$

この時点でイメージサイズが 4.9GBです

作ったコンテナに relion を組み込む

root権限でつくちゃいます. 自分のホームディレクトリにrelionを作ってもいいのですが、コンテナがあって初めて動く代物なのでroot権限でコンテナ内部に押し込めたいと思います

[illya@centos7 ~]$ sudo singularity shell --writable relion
Singularity>
Singularity> apt update
Singularity> apt install -y cmake git build-essential mpi-default-bin mpi-default-dev libfftw3-dev libtiff-dev libfltk1.3-dev libx11-dev libpng-dev
Singularity> git clone https://github.com/3dem/relion
Singularity> cd relion
Singularity> git checkout ver4.0
Singularity> mkdir 400b && cd 400b
Singularity> cmake ..
Singularity> make -j 20 && make install
Singularity> cd ~/
Singularity> rm -rf relion
Singularity> exit
[illya@centos7 ~]$
 
[illya@centos7 ~]$ sudo singularity build relion-4.0-beta-2.sif relion
[illya@centos7 ~]$ ls -lh relion-4.0-beta-2.sif
-rwxr-xr-x. 1 illya illya 3.2G Jan  1 18:57 relion-4.0-beta-2.sif
[illya@centos7 ~]$

これでsif relion-4.0-beta-2.sif を得た.

Definition File を作る

上記のsadboxからsifを作るのもいいのだが、レシピ(定義書)からsifを作ったほうがわかりいい

[illya@centos7 ~]$ vi relion-3.1.3.def
BootStrap: docker
From: nvidia/cuda:11.4.2-devel-ubuntu20.04
 
%post
  export TZ="Asia/Tokyo"
  ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  apt update
  apt install -y cmake git curl build-essential mpi-default-bin mpi-default-dev libfftw3-dev libtiff-dev libfltk1.3-dev libx11-dev libpng-dev
  git clone https://github.com/3dem/relion
  cd relion
  git checkout ver3.1
  mkdir 313 && cd 313
  cmake ..
  make -j 20 && make install
  cd ~/ && rm -rf relion
  curl  "https://grigoriefflab.umassmed.edu/system/tdf?path=ctffind-4.1.14-linux64.tar.gz&file=1&type=node&id=26" > ctffind-4.1.14-linux64.tar.gz
  cd /usr/local
  tar xf ~/ctffind-4.1.14-linux64.tar.gz
  cd ~/ && rm -rf ctffind-4.1.14-linux64.tar.gz
 
%environment
  RELION_CTFFIND_EXECUTABLE=/usr/local/bin/ctffind
  export RELION_CTFFIND_EXECUTABLE
 
[illya@centos7 ~]$

それで

[illya@centos7 ~]$ sudo singularity build relion-3.1.3.sif relion-3.1.3.def

relion-1.4

BootStrap: docker
From: spack/centos6:latest
 
%files
  /Public/em/relion-1.4.tar.bz2   /usr/src
  /Public/em/ResMap-1.1.4-linux64 /usr/local/bin
  /Public/em/ctffind-4.1.14-linux64.tar.gz /usr/src
 
%post
  yum install cmake openmpi-devel libX11-devel fftw-devel libtiff-devel texlive-latex texlive-dvips ghostscript evince fltk-fluid evince environment-modules -y
  mkdir -p /apps/src
  tar xf /usr/src/relion-1.4.tar.bz2
  cd relion-1.4/
  source /etc/profile.d/modules.sh
  module load openmpi-x86_64
 
  sed  -i 's/fltkfile=`pwd`\/bin\/fltk-config/fltkfile=`which fltk-config`/' configure
  sed -i 's/external\/fltk-1.3.0\///' src/displayer.h
  sed -i 's/external\/fltk-1.3.0\///' src/manualpicker.h
 
  fltk_cxx=`fltk-config --cxxflags`
  fltk_ld=`fltk-config --ldflags`
 
  ./configure --prefix=/apps/relion-1.4 --enable-mpi CPPFLAGS="$fltk_cxx" LDFLAGS="$fltk_ld"
  make
  make install
  ln -s /apps/relion-1.4/bin/relion_maingui /apps/relion-1.4/bin/relion
 
  cd /usr/local
  tar xf /usr/src/ctffind-4.1.14-linux64.tar.gz
  rm -f /usr/src/ctffind-4.1.14-linux64.tar.gz /usr/src/relion-1.4.tar.bz2
%environment
  export RELION_CTFFIND_EXECUTABLE=/usr/local/bin/ctffind
  export RELION_RESMAP_EXECUTABLE=/usr/local/bin/ResMap-1.1.4-linux64
  export LD_LIBRARY_PATH=/apps/relion-1.4/lib:/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH
  export PATH=/apps/relion-1.4/bin:/usr/lib64/openmpi/bin:$PATH
singularity build -f relion.sif relion.def

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-07-09 (土) 00:23:11 (42d)