轉錄組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 && service ssh start -D" #同時啓動兩個服務
docker鏡像文件及root目錄打包下載
docker鏡像 ssh登陸 帳戶root 密碼20201110; rstudio登陸帳戶sliver密碼20201110
root目錄打包 外掛root目錄打包