macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

docker環境にツールを導入していくためのベースイメージを作る。

 

Dockerイメージ作成時のベースイメージを作って、それをpullするようにすると捗ります。試してみます。

 

ここではcondaコマンドを使えるようにminiocndaを導入するイメージを作成します。それからこのイメージをベースに新しいイメージを作成します。 

1:ベースイメージの作成

base imageのDockerfileを書きます。Minicondaの3.9インストーラー(python3.9)をダウンロードしています。1つ目のRUN命令ではapt-getコマンドで依存んライブラリやコマンドを導入しています。サイズを減らすため--no-install-recommendsもつけていましたが、不安定になったので消しています。2つ目のRUN命令で自分がよく使うmambaコマンドも使えるようにしていますが、不要なら2つ目のRUN命令は消して下さい。

#################################################
FROM ubuntu:latest

MAINTAINER Kazuma Uesaka
LABEL description="miniconda3 Base image"
#################################################

ENV PATH ~/miniconda3/bin:$PATH
ENV DEBIAN_FRONTEND=noninteractive

RUN apt update -y && apt install -y \
build-essential \
bzip2 \
wget \
cmake \
git \
gcc \
make && apt clean

RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh -O ~/Miniconda.sh && \
/bin/bash ~/Miniconda.sh -b -p ~/miniconda3 && \
rm ~/Miniconda.sh && \
echo ". ~/miniconda3/etc/profile.d/conda.sh" >> ~/.bashrc && \
echo "conda activate base" >> ~/.bashrc

RUN ~/miniconda3/bin/conda install -c conda-forge mamba -yq && ~/miniconda3/bin/mamba clean -a -y

Shell ["/bin/bash", "-c"]
WORKDIR /home
#################################################

Dockerfileという名前で空のディレクトリ(*1)に保存します。

準備できたら、"kazumax/miniconda"でビルドします。TAGは1.0とします(*2)。

docker build -t kazumax/miniconda:1.0 .

ビルドが終わるまで5分ほどかかりました。

 image名とサイズを確認します。

> docker images

$ docker images

REPOSITORY                    TAG                 IMAGE ID       CREATED              SIZE

kazumax/miniconda             1.0                 0041b05dbf0e   43 seconds ago       841MB

TAGは1.0、ubuntuをベースイメージに色々導入しているため、サイズは841MBもありました。軽量化するならarpile.linuxなど使うのも手ですが(Dockerfile例)、後々苦労したくないので、ここではubuntuにしました。

 

(option) :イメージを公開する

ローカルマシン専用のベースイメージなら不要ですが、他のマシンから利用したり、他のユーザーに利用してもらうには、作成したimageをdockerhubにpushして公開する必要があります。

#自分のアカウントにログインする
docker login

#imageをアップロードする
docker push kazumax/miniconda:1.0

#他の環境でpullする。
docker pull kazumax/miniconda:1.0

 

2:作成したイメージをベースに、新しいイメージを作る

 ベースイメージができたので、 これをベースにして他のツールを導入するDockerfileを書きます。 ここではmambaを使ってsamtoolsを入れるDockerfileを書いています。RUN命令1つだけのシンプルなものです。

#################################################
FROM kazumax/miniconda:1.0
MAINTAINER xxx

LABEL description="test image"
#################################################

RUN mamba install -c bioconda -qy samtools && mamba clean -ay

#################################################

 Dockerfileとしてカレントに保存します。

 

ビルドします。

docker build -t test .

image名とサイズを確認します。

> docker images

$ docker images                                                                                                                                                                                                                      

REPOSITORY                    TAG                 IMAGE ID       CREATED          SIZE                                                                                                                                                                                                              

test                          latest              725f0fe94e16   3 seconds ago    879MB

kazumax/miniconda             1.0                 0041b05dbf0e   13 minutes ago   841MB

あとはdocker runで起動すれば使えます。

 

2021 5/5 追記

1、マルチステージビルド


 

2、MinicondaからMiniforgeかMambaforgeに変える。

 

 

 

 

参考

*1

*2

docker buildコマンドには、レポジトリのDockerfileを直接指定したり、CPUやメモリのリソース使用量を制限するオプションもあります(*2)。

*3

 

*4

 

関連