ミニマムなDocker fileを作る
はじめに (コンセプト)
Linuxベースでバイオインフォマティクスツールの環境構築を実施してツールの動作確認などをしたいことが多々ある。そのため、軽量なLinux+Python環境をDockerで構築しようと思ったが、意外にもそのような情報は少ない。そこで備忘録もかねてDockerfileの作成からPushまでを書こうと思う。
How to code
とりわけバイオインフォマティクスツールの利用を優先したいため、以下のような環境を構築する。
- Core unix: debin9 (slim) + bioconda3
これによって、少なくともLinuxベース (軽量!)でBiocondaが入るため、大抵のツールは導入可能になる。例えば、condaやpipで目的のツールを入れることができる。
以下がそのDockerfileである。
# Base image
FROM debian:9-slim
# Install Miniconda3 & Bioconda
RUN apt-get -qq update && apt-get -qq -y install curl bzip2 \
&& curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o /tmp/miniconda.sh \
&& bash /tmp/miniconda.sh -bfp /usr/local \
&& rm -rf /tmp/miniconda.sh \
&& conda install -y python=3 \
&& conda update conda \
&& conda config --add channels r \
&& conda config --add channels defaults \
&& conda config --add channels conda-forge \
&& conda config --add channels bioconda \
&& apt-get -qq -y remove curl bzip2 \
&& apt-get -qq -y autoremove \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /var/log/dpkg.log \
&& conda clean --all --yes
ENV PATH /opt/conda/bin:$PATH
これを「Dockerfile」として保存する。その際、拡張子はつけない。
Docker Hubにあげるまで
作成したDockerfileをBuildする。
# Dockerfileのあるディレクトリで以下のコマンドを実行
docker build -t <NAME> .
# <NAME>は好きな名前
これでローカル環境でDockerfile中の環境が使用可能。ローカル環境で使用するには以下のコマンド。
docker run -itv $(pwd):/home <NAME>
これで<NAME>内のHomeディレクトリと現在のディレクトリのパスがつながった状態で<NAME>環境を動かすことができる。
次に、Pushまでの流れを書いていく。
# NAMEの<IMAGE ID>を確認する
docker images
# Docker Hubに登録している<USR>を記載する
docker tag <IMEGE ID> <USR>/<NAME>:latest
# tag化が完了したらpushでDocker Hubに登録する
docker push <USR>/<NAME>:latest
Pushすることで、Docker Hub (Docker Hub Container Image Library | App Containerization) で検索・確認すると<NAME>で登録されている。