跟着jimmy学docker系列之第2讲:一个软件一个容器
✎✎✎
回过头来看当初在生信技能树发布的docker教程已经是2017-07-07的事情了,那是一个好日子👇:
其实当时只是为了写教程而学习和分享,一直没有找到docker的实际应用场合,当初带我入docker坑的胡博士也离开北大毕业去了华为工作。
而为什么我会重新捡起来docker,可能也是机缘巧合吧,华为生信容器负责人唐博士一直想要合作,我却找不到跟他们的合作接入点,既然是基于docker的合作,我如果都不真正使用它,也的确说不过去,正好最近安装lancet软件各种make报错,缺的系统动态库太多,而它是没有conda源的,这个时候docker是最佳方案。
jimmy的docker教程——第2讲
一个软件一个容器
首先需要复习几个docker指令:
docker
docker info ## 可以查看目前机器上面的docker里面有多少容器或者镜像。
docker version
sudo docker search ubuntu
sudo docker run hello-world
## 上面代码下载了一个镜像,启动了一个容器,下面就可以查看它们
docker ps -a ## 查看目前所有没有被销毁的容器进程。
docker images -a ## 查看目前所有的本地镜像
docker volume ls
docker network ls
1. 根据需求下载docker镜像
在服务器上,GitHub里面的软件(https://github.com/nygenome/lancet)安装非常困难
于是想求助于docker版本:https://hub.docker.com/r/seandavi/lancet/
docker run seandavi/lancet
可以看到:
jmzeng$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
seandavi/lancet latest 1a83521f4492 12 days ago 490MB
的确是有了这个本地镜像,现在可以启动该容器来处理自己的数据。
2. 启动镜像
首先
可以用交互式命令行进入该镜像:
docker run -it seandavi/lancet /bin/bash
简单查看配置还有该容器的路径,接下来就可以把本地数据盘挂载进入进行处理。这样在容器启动后,容器内的虚拟电脑会自动创建被添加的目录。
-v参数中,冒号 " : " 前面的目录是宿主机目录,后面的目录是容器内目录。详见:http://blog.csdn.net/magerguo/article/details/72514813
docker run -it -v /Users/jmzeng/tmp:/work_dir seandavi/lancet /bin/bash
----------------- -------------------------
↓ ↓
宿主机目录 容器内目录
这样docker能访问本机的/Users/jmzeng/tmp
的内容,同时对镜像容器里面的/work_dir
目录的修改等同于对本机的/Users/jmzeng/tmp
的修改
3. 处理数据
软件示例代码很简单:
lancet --tumor T.bam --normal N.bam --ref ref.fa --reg 22:1-51304566 --num-threads 8 > out.vcf
有趣的是作者制作的镜像其实也有错误,lancet软件安装是失败的,不过docker的好处是里面可以使用root权限。
apt-get install libbz2-dev
apt-get install zlib1g-dev
apt-get install liblzma-dev
apt-get install libssl-dev
apt-get install libbamtools-dev
apt-get install libcurl4-openssl-dev
lancet镜像
呢?◆ ◆ ◆ ◆ ◆
生信基础知识大全系列:生信基础知识100讲
史上最强的生信自学环境准备课来啦!! 7次改版,11节课程,14K的讲稿,30个夜晚打磨,100页PPT的课程。
如果需要组装自己的服务器;代办生物信息学服务器
如果需要帮忙下载海外数据(GEO/TCGA/GTEx等等),点我?
如果需要线下辅导及培训,看招学徒
如果需要个人电脑:个人计算机推荐
如果需要置办生物信息学书籍,看:生信人必备书单
如果需要实习岗位:实习职位发布
如果需要售后:点我