轉錄組RNA-Seq使用docker+bioconda搭建分析環境

轉錄組RNA-Seq使用docker+bioconda搭建分析環境

前言

近期學習轉錄組分析,從ncbi下載數據,轉成fastq,STAR/hisat2 map到基因組上,使用featureCount拿到表達矩陣文件挺順利的,就是到了下游分析,開始使用R開始遇到了各類問題。linux

緣由是以前一直使用的一個docker 環境是基於ubuntu 16.04的,上面的R版本是3.2.3,在進行下游分析的時候各類R包安裝不上,緣由也是R版本太舊。經歷了各類問題以後終於忍無可忍,決心從新構建一個RNA-Seq的docker分析環境,本文做爲記錄以備後查。git

基於docker構建環境

筆者使用docker的方式屬於網上不推薦的方式,相似於虛擬機鏡像。緣由就是懶得去編寫dockerfile,感受太麻煩。github

極速安裝docker極速安裝docker-compose

#從如下網址下載docker-compose,將docker-compose文件放在path變量目錄下如:/usr/local/bin
https://github.com/docker/compose/releases

選擇docker鏡像並構建基礎鏡像

由於以前的Ubuntu16.04過於老舊,這裏直接選擇Ubuntu20.04的鏡像redis

#拉取ubuntu20.04鏡像
docker pull ubuntu:20.04

#獲取docker鏡像列表
docker images 或者 docker image ls

#確認docker鏡像拉取完成以後,使用該鏡像建立一個docker容器
docker run --name first -it ubuntu:20.04 /bin/bash

#運行完成以後進入容器中
root@80cb4d36be59#

#安裝ssh等軟件
root@80cb4d36be59# apt update && apt install openssh-server vim net-tools curl

#安裝完成以後修改ssh配置文件,便於遠程登陸
root@80cb4d36be59# vim /etc/ssh/sshd_config

#修改以下幾行並保存
Port 9020  #修改默認端口號(可選)
ListenAddress 0.0.0.0  #默認監聽地址,全部地址
LoginGraceTime 2m      #容許用戶登陸耗時(可選)
PermitRootLogin yes    #容許root用戶登陸,docker默認用戶是root用戶

#修改默認root帳戶密碼,便於ssh遠程登陸
root@80cb4d36be59# passwd root

#啓動ssh服務
root@80cb4d36be59# service ssh start

# 獲取容器ip地址,
root@b8080a125313:/# ifconfig
eth0: flags=4163<up,broadcast,running,multicast>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 27095  bytes 55050990 (55.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26785  bytes 2478368 (2.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<up,loopback,running>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#打開一個新的終端測試下鏈接
ssh root@172.17.0.2 -p9020

#若是能夠鏈接上則第一步構建完成,咱們commit建立本身的鏡像,打開終端
docker commit first ubuntu20.04-ssh:1.00

第二階段:安裝bioconda構建基礎生信鏡像

  • 退出並刪除以前運行的容器docker

    #退出以前的容器
    root@80cb4d36be59# exit
    #刪除該容器
    docker rm first
  • 編寫docker-compose.yml文件,並使用docker-compose啓動容器shell

    version: "3"
    services:
      RNASeq:
        image: ubuntu20.04-ssh:1.00 #此處爲咱們以前提交的鏡像名稱
        container_name: rnaseq #運行容器名稱
        volumes:
          - /media/sliver/Element1/data:/opt/data:rw  #外掛data目錄,放置原始數據
          - /media/sliver/Manufacture/RNA-Seq/root:/root:rw #外掛root目錄,bioconda安裝位置,減少鏡像體積
          - /media/sliver/Manufacture/RNA-Seq/ref:/opt/ref:rw #外掛reference目錄
          - /media/sliver/Manufacture/RNA-Seq/result:/opt/result:rw #分析結果輸出及中間文件目錄
        ports:
          - "9020:9020"
        network_mode: "host" #此處直接使用host模式,默認爲bridge模式均可以,host模式注意不能與服務器端口衝突
        environment:
          - TZ="Asia/Shanghai" #經過變量設置時區,不然系統時間錯誤
        command: service ssh start -D  #啓動容器時啓動ssh服務便於遠程鏈接
  • 使用docker-compose.yml文件啓動容器ubuntu

    docker-compose.yml文件目錄下運行docker-compose up啓動容器
    並查看輸出日誌,看是否存在錯誤
  • 使用ssh登陸鏡像,並安裝biocondavim

    #這裏使用127.0.0.1地址登陸,每次容器從新運行ip地址172網段的會發生變更
    ssh root@127.0.0.1 -p9020
    
    #登陸成功,安裝bioconda
    curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    sh Miniconda3-latest-Linux-x86_64.sh
    
    #setup channels
    conda config --add channels defaults
    conda config --add channels bioconda
    conda config --add channels conda-forge
    #直接修改配置文件,添加清華源 vim ~/.condarc
    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
    # 使配置文件生效
    source ~/.bashrc
    
    #安裝幾個軟件測試下
    conda install fastqc
    conda install multiqc
    conda install STAR
    conda install hisat2
  • 構建bioconda 第二階段鏡像瀏覽器

    #測試沒有問題,打開一個新的終端提交鏡像,第二階段鏡像後續能夠用於各類生信環境
    docker commit rnaseq ubuntu20.04-bioconda

第三階段,安裝R、Bioconductor和RStudio-Server,構建用於RNA-Seq(轉錄組)的鏡像

  • 安裝R及Bioconductorbash

    #切換回剛纔的容器內shell終端,安裝R
    apt install r-base
    
    #安裝完成以後查看版本
    R --version
    #獲得輸出以下:
    R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
    Copyright (C) 2020 The R Foundation for Statistical Computing
    Platform: x86_64-pc-linux-gnu (64-bit)
    
    R is free software and comes with ABSOLUTELY NO WARRANTY.
    You are welcome to redistribute it under the terms of the
    GNU General Public License versions 2 or 3.
    For more information about these matters see
    https://www.gnu.org/licenses/.
    
    #安裝Bioconductor,終端中運行
    R
    #R環境提示符運行
    if (!requireNamespace("BiocManager", quietly = TRUE))
        install.packages("BiocManager")
    BiocManager::install()
    
    #安裝完成以後咱們測試下,安裝兩個R包
    BiocManager::install('edgeR')
    BiocManager::install("DESeq2")
  • 安裝RStudio Server,爲了遠程部署和運行R

    #安裝RStudio Server
    apt-get install gdebi-core
    wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-1.3.1093-amd64.deb
    gdebi rstudio-server-1.3.1093-amd64.deb
    
    #建立配置文件
    vi /etc/rstudio/rserver.conf
    #添加以下語句
    ###在兩個配置文件中添加如下語句
    ##系統的R程序所在位置,若是我的目錄下有利用anaconda安裝R,可能會報錯
    rsession-which-r=/usr/bin/R  
    www-port=8787 ### 經過ip的8787端口鏈接
    
    
    vi /etc/rstudio/rsession.conf
    #添加以下語句
    www-port=8787 ### 經過ip的8787端口鏈接
    
    #添加用戶sliver,用於登陸RStudio Server
    useradd sliver
    passwd  sliver
    
    #建立該用戶home目錄,不然登陸成功,可是會報錯 Unable to connect to service
    mkdir /home/sliver
    chown -R sliver /home/sliver
    
    #檢查Rstudio-server是否可以運行並啓動服務啓動
    rstudio-server verify-installation
    rstudio-server start
  • 打開瀏覽器輸入:http://127.0.0.1:8787

    <img src="https://oscimg.oschina.net/oscnet/Xcs8lBD6Zp7H9eV.png" style="zoom:50%;">

  • 使用以前建立的用戶sliver及密碼登陸:

    <img src="https://oscimg.oschina.net/oscnet/t1VHbaCIYRTUGKw.png" style="zoom: 33%;">

  • 說明配置成功。

提交鏡像,並修改docker-compose.yml文件

  • 提交鏡像,用於RNA-Seq轉錄組分析

    #打開一個新的終端運行
    docker commit rnaseq ubuntu20.04-rnaseq:1.00
    
    #將當前容器導出爲文件
    docker export -o ubuntu_20.04_rnaseq.tar rnaseq
    
    #遷移鏡像能夠從文件導入至鏡像
    docker import ubuntu_20.04_rnaseq.tar ubuntu20.04-rnaseq:1.00
  • 修改docker-compose.yml文件

    version: "3"
    services:
      RNASeq:
        image: ubuntu20.04-rnaseq:1.00
        container_name: rnaseq
        volumes:
          - /media/sliver/Element1/data:/opt/data:rw #掛載數據目錄
          - /media/sliver/Manufacture/RNA-Seq/root:/root:rw #掛載root目錄
          - /media/sliver/Manufacture/RNA-Seq/ref:/opt/ref:rw #掛載reference目錄
          - /media/sliver/Manufacture/RNA-Seq/result:/opt/result:rw #掛載中間文件和結果目錄
        ports:
          - "9020:9020"  # ssh鏈接端口
          - "8787:8787"  # RStudio Server Web訪問端口
        network_mode: "host" #網絡模式爲host,注意端口與服務器端口不能衝突
        environment:
          - TZ="Asia/Shanghai" #設置時區,方式時間不對
        command: /bin/bash -c "rstudio-server start &amp;&amp; service ssh start -D" #同時啓動兩個服務

docker鏡像文件及root目錄打包下載

docker鏡像 ssh登陸 帳戶root 密碼20201110; rstudio登陸帳戶sliver密碼20201110

root目錄打包 外掛root目錄打包

docker-compose.yml文件下載

相關文章
相關標籤/搜索