使用Dockerfile制作生物信息分析基础镜像

使用Dockerfile制作生物信息分析基础镜像

使用 Dockerfile 定制镜像

从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

还以之前定制 centos7 镜像为例,这次我们使用 Dockerfile 来定制。

在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:

$ mkdir mydocker
$ cd mydocker
$ touch Dockerfile

其内容为:

# Base image
FROM centos:centos7

################## METADATA ######################
LABEL base.image="centos:7" \
      version="1" \
      software="Biocontainers base Image" \
      software.version="20200312" \
      about.summary="Base image for omicsclass" \
      about.home="www.omicsclass.com" \
      about.documentation=" " \
      license="  " \
      about.tags="Genomics,Proteomics,Transcriptomics,General,Metabolomics"

################## MAINTAINER ######################
MAINTAINER huangls <huang2002003@qq.com>

#COPY Miniconda3-latest-Linux-x86_64.sh /tmp/miniconda.sh
#ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH /biosoft/miniconda/bin:$PATH

RUN yum -y update && yum upgrade -y \
    && yum -y install  bzip2 openssl openssh-clients\
		cmake zlib  libpng libpng12 libtiff  libjpeg boost \
		wget   zip    which  less  tree \
    && yum clean all \
	&& mkdir -p  /biosoft/miniconda  \
	&& wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh \
    && bash /tmp/miniconda.sh -bfp /biosoft/miniconda \
    && rm -rf /tmp/miniconda.sh \
	&& ln -s /biosoft/miniconda/etc/profile.d/conda.sh /etc/profile.d/conda.sh  \
    && echo ". /biosoft/miniconda/etc/profile.d/conda.sh" >> ~/.bashrc  \
	&& echo "alias e=\"less -S \"" >> ~/.bashrc \
	&& echo "alias ee=\"less -SN \"" >> ~/.bashrc \
	&& echo "alias l=\"ls -lhtr"\" >> ~/.bashrc \
	&& echo "alias ll=\"ls -lh\"" >> ~/.bashrc \
	&& echo "export PS1=\"\[\e[32m\][\[\e[35m\]\u\[\e[m\]@\[\e[36m\]\h \[\e[31m\] \t \w\[\e[32m\]]\[\e[36m\]#\[\e[m\]\"" >> ~/.bashrc \
	#&& conda config --add channels bioconda \
	#&& conda config --add channels conda-forge \
	#&& conda config --add channels genomedk \
	&& conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/  \
	&& conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/  \
	&& conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mro/  \
	&& conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/  \
	&& conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/  \
	&& conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/  \
	&& conda config --set show_channel_urls yes \
	&& conda config --set ssl_verify no \
	&& conda clean --all --yes 
#RUN	conda update conda -y  && conda upgrade conda -y \
    
	 

VOLUME ["/work"]

# Overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]

WORKDIR /work执行

执行得到镜像

$ docker build -t omicsclass/biocontainer-base:latest .
Sending build context to Docker daemon 2.048 kB
...


FROM 指定基础镜像

所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定 基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。


RUN 执行命令

RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。其格式有两种:

  • shell 格式:RUN <命令>,就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN 指令就是这种格式。

  • 发表于 2020-03-16 11:14
  • 阅读 ( 2871 )
  • 分类:linux

0 条评论

请先 登录 后评论
omicsgene
omicsgene

生物信息

698 篇文章

作家榜 »

  1. omicsgene 698 文章
  2. 安生水 347 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. 红橙子 78 文章
  7. rzx 74 文章
  8. CORNERSTONE 72 文章