1.诉求:
在日常的学习和工作中,随着经手的分析越来越多,各个组学数据的软件和工具常常会出现不能兼容的情况,所以很多时候装包也成了一个技术活。我之前的博客记录了那些年的内心os(fig1)。那么有没有更科学的工具来管理各种数据分析的环境,并且在不得不更换服务器和计算机的情况下,也不用为了装包而求助别人呢?
2.方案:
很多的教程都会用到conda,而且几乎都是两步法:
conda env export > environment.yml #step1
conda env create -f environment.yml #step2
但是,如果只是conda,只能说是够用,而docker才够高级。
Docker本身就是一门科学,我只能在下面po一些代码来实现环境迁移的目的。
#docker急速安装,快速完成不浪费时间
curl -sSfL get.docker.io -o get_docker.sh
bash get_docker.sh --mirror Aliyun
# pull centos:7的官方镜像
docker pull centos:7
docker images # 查看镜像
docker run --name 10x_sc_docker -it centos:7 /bin/bash #创建容器,一个镜像可以创建多个容器,而这每个容器就可以搭建不同组学数据的分析环境了。
docker ps -a # 查看CONTAINER ID (每个容器都会有一个id)
docker start CONTAINER ID # 开启容器
docker ps # 运行过后能看到STATUS的状态为UP ... ,此时说明容器已经打开了
docker exec -it 10x_sc_docker /bin/bash # 进入容器,此时你可以看到一个干净的centos环境
这样,我们就可以在容器里搭建分析环境了,可以在这里装conda,再通过conda来装fastqc,bowtie2,star,R等等。如果需要迁移并部署到其他服务器,我们可以:
# 容器名称为刚刚的10x...,镜像名称可以自己定义,如sc:0.01, sc:v1等等
docker commit 容器名称 镜像名称
docker save –o sc.tar 镜像名称
#然后我们登录另一台服务器,这样就可以了。
docker load -i 镜像名.tar
3.补充内容
环境配置好了之后,我们还需要配套的数据库,基因组序列文件和原始数据,这些可以自己摸索了,但是呢如果配套的数据很大的话,我建议使用 docker 添加映射,这样在迁移镜像的时候,数据可以通过硬盘迁移,docker commit 这步也能耗费较少的时间,简单来说就是需要修改 hostconfig.json 和config.v2.json这两个配置文件。