前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于docker的生信基础环境镜像构建

基于docker的生信基础环境镜像构建

原创
作者头像
SliverWorkspace
发布2022-08-11 22:48:19
1.3K0
发布2022-08-11 22:48:19
举报

基于docker的生信基础环境镜像构建

本文是《转录组RNA-Seq使用docker+bioconda实现分析环境搭建》一文的升级版,下面解决几个问题:

Q:为什么不使用本地部署运行docker容器模式?而使用带ssh服务的docker镜像? A:单机毕竟容量资源、算力有限不可能做太多扩展,带ssh的docker部署连接基于网络,扩展性更好。

Q:为什么对上文docker用法升级? A:毕竟docker又用了一段时间,有些提高,毕竟本地通过docker commit提交获取docker镜像的方式一来会造成docker镜像体积飙升,不便于移植;二来也不是官方推荐的使用方法,能用但是不推荐;近来有时间就想再完善下。

Q:如何安装docker和docker-compose? A:安装docker和docker-compose:

代码语言:shell
复制
#docker极速安装,快速完成不浪费时间
curl  -sSfL get.docker.io -o get_docker.sh
bash  get_docker.sh --mirror Aliyun

#安装docker-compose
#从以下网址下载docker-compose,将docker-compose文件放在path变量目录下如:/usr/local/bin并增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
https://github.com/docker/compose/releases

话不多说,进入正题:docker镜像构建(镜像大小676MB),dockerfile如下:

代码语言:shell
复制
#从Ubuntu20.04镜像开始构建,Ubuntu22.04据说会不定期杀掉占用资源过多的进程
FROM        ubuntu:20.04
#1.设置账户字符编码为C.UTF-8,提高兼容性;设置时区,ssh登录密码为20201110(账户为root),连接端口为9022
ENV         LANG=C.UTF-8 TZ=Asia/Shanghai PS=20201110 port=9022
#设置时区、更新镜像软件、安装aria2(下载工具替代wget,curl以获取更快的下载速度,容错/下载会自动重试)
#openssh服务并更新配置文件,使root账户可以登录、更新root账户密码为设置值
RUN         ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
            apt update && apt upgrade -y && apt install openssh-server aria2 -y && apt autoremove -y
RUN         sed -i "s/#PermitEmptyPasswords no/PermitEmptyPasswords no/g" /etc/ssh/sshd_config && \
            sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
            sed -i "s/#Port 22/Port ${port}/g" /etc/ssh/sshd_config && \
            sed -i "s/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g" /etc/ssh/sshd_config && \
            sed -i "s/#LoginGraceTime 2m/LoginGraceTime 2m/g" /etc/ssh/sshd_config && \
            echo root:${PS} | chpasswd
#aria2下载miniconda、安装、添加channel、删除安装文件(减小镜像体积)、初始化miniconda
RUN         aria2c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -d ~ && \
            bash ~/Miniconda3-latest-Linux-x86_64.sh -b && \
            ~/miniconda3/bin/conda config --add channels defaults    && \
            ~/miniconda3/bin/conda config --add channels bioconda    && \
            ~/miniconda3/bin/conda config --add channels conda-forge && \
            rm -f ~/Miniconda3-latest-Linux-x86_64.sh && \
            ~/miniconda3/bin/conda init
#复制该文件到镜像root目录下,condarc为清华源配置文件,国内提速可以注销该行
#COPY       --chown=root:root ./condarc /root/.condarc
#暴露ssh连接端口
EXPOSE      $port
#初始化镜像运行:根据配置项变量PS修改root密码,该密码可以运行时重新设置初始化,最后启动ssh服务
ENTRYPOINT  ["/bin/bash", "-c", "echo root:${PS} | chpasswd && service ssh start -D"]
构建镜像
代码语言:shell
复制
#将condarc文件和dockerfile放在同一目录下,构建镜像
docker     build -t doujiangbaozi/sliverworkspace:latest .

#或者使用已经构建好的镜像,直接拉取到本地
docker     pull     doujiangbaozi/sliverworkspace:latest

condarc文件(可选,这里使用的是清华的源):

代码语言:yaml
复制
channels:
  - conda-forge
  - bioconda
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

如何使用该镜像:

推荐使用docker-compose,配置文件docker-compose.yml如下

代码语言:yaml
复制
version: "3"
services:
  TumorOnly:
    image: doujiangbaozi/sliverworkspace:latest
    container_name: TumorOnly
    volumes:
      - /media/sliver/Data/data:/opt/data:rw                               #挂载输入数据目录
      - /media/sliver/Manufacture/tumor-only/envs:/root/miniconda3/envs:rw #挂载envs目录
      - /media/sliver/Manufacture/tumor-only/config:/opt/config:rw         #挂载config目录
      - /media/sliver/Manufacture/sliver/ref:/opt/ref:rw                   #挂载reference目录
      - /media/sliver/Manufacture/tumor-only/result:/opt/result:rw         #挂载中间文件和结果目录
    ports:
      - "9022:9022"                                                        #ssh连接端口,此处可以映射为其他端口
    environment:
      - TZ=Asia/Shanghai                                                   #设置时区
      - PS=20191124                                                        #设置ssh密码

在docker-compose.yml文件目录下运行docker-compose up -d 即可运行;

查看docker运行状态
代码语言:shell
复制
#查看docker容器运行状态
docker ps

#或者docker-compose.yml目录下运行
docker-compose ps

如何使用该docker搭建pipeline?

ssh 登录该容器ssh账户,即可在环境下开始生信分析

这里参考snakemake的写法,每个分析步骤创建一个yaml文件,里面是用到的软件及版本。首次运行检测该步骤环境存在,不存在先安装软件初始化。

代码语言:shell
复制
#用到的环境变量,以最简单的fastqc,multiqc为例
export env=/root/miniconda3/envs  #conda环境软件安装目录,最好挂载物理机volume
export conf=/opt/config           #conda环境配置文件目录
export sn=RD1703007FFP            #样本编号,sample  number
export pn=TumorOnly               #项目编号,project number
export result=/opt/result         #中间文件输出目录

#conda检测环境是否存在,首次运行不存在创建该环境并安装软件
if [ ! -d "${envs}/${pn}.fastqc" ]; then
  conda env create -f ${conf}/fastqc.yaml
fi
#切换到环境下运行fastqc、multiqc
conda activate "${pn}.fastqc"
mkdir  -p ${result}/${sn}/qc
fastqc -o ${result}/${sn}/qc \
	${result}/${sn}/trimmed/${sn}_trimmed_R1.fastq.gz \
    ${result}/${sn}/trimmed/${sn}_trimmed_R2.fastq.gz
multiqc ${result}/${sn}/ -f -o ${result}/${sn}/qc
#退出环境
conda deactivate

fastqc.yaml文件如下,文件位于/opt/config目录下

代码语言:yaml
复制
name: TumorOnly.fastqc
channels:
  - conda-forge
  - bioconda
  - defaults
dependencies:
  - fastqc=0.11.9
  - multiqc=1.13a

后续便于搭建整个分析流程。待续。。。。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于docker的生信基础环境镜像构建
    • 本文是《转录组RNA-Seq使用docker+bioconda实现分析环境搭建》一文的升级版,下面解决几个问题:
      • Q:为什么不使用本地部署运行docker容器模式?而使用带ssh服务的docker镜像? A:单机毕竟容量资源、算力有限不可能做太多扩展,带ssh的docker部署连接基于网络,扩展性更好。
      • Q:为什么对上文docker用法升级? A:毕竟docker又用了一段时间,有些提高,毕竟本地通过docker commit提交获取docker镜像的方式一来会造成docker镜像体积飙升,不便于移植;二来也不是官方推荐的使用方法,能用但是不推荐;近来有时间就想再完善下。
      • Q:如何安装docker和docker-compose? A:安装docker和docker-compose:
    • 话不多说,进入正题:docker镜像构建(镜像大小676MB),dockerfile如下:
      • 如何使用该镜像:
        • 推荐使用docker-compose,配置文件docker-compose.yml如下
        • 在docker-compose.yml文件目录下运行docker-compose up -d 即可运行;
      • 如何使用该docker搭建pipeline?
        • 后续便于搭建整个分析流程。待续。。。。
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档