前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着jimmy学docker系列之第2讲:一个软件一个容器

跟着jimmy学docker系列之第2讲:一个软件一个容器

作者头像
生信技能树
发布2018-10-25 11:43:59
9850
发布2018-10-25 11:43:59
举报
文章被收录于专栏:生信技能树生信技能树

✎✎✎

回过头来看当初在生信技能树发布的docker教程已经是2017-07-07的事情了,那是一个好日子?:

我学会docker啦!希望你也可以学会

其实当时只是为了写教程而学习和分享,一直没有找到docker的实际应用场合,当初带我入docker坑的胡博士也离开北大毕业去了华为工作。

而为什么我会重新捡起来docker,可能也是机缘巧合吧,华为生信容器负责人唐博士一直想要合作,我却找不到跟他们的合作接入点,既然是基于docker的合作,我如果都不真正使用它,也的确说不过去,正好最近安装lancet软件各种make报错,缺的系统动态库太多,而它是没有conda源的,这个时候docker是最佳方案。

jimmy的docker教程——第2讲

一个软件一个容器

首先需要复习几个docker指令:

代码语言:javascript
复制
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/

代码语言:javascript
复制
docker run seandavi/lancet

可以看到:

代码语言:javascript
复制
jmzeng$ docker images -a
REPOSITORY          TAG      IMAGE ID        CREATED             SIZE
seandavi/lancet     latest   1a83521f4492    12 days ago         490MB

的确是有了这个本地镜像,现在可以启动该容器来处理自己的数据。

2. 启动镜像

首先

可以用交互式命令行进入该镜像:

代码语言:javascript
复制
docker run -it seandavi/lancet /bin/bash

简单查看配置还有该容器的路径,接下来就可以把本地数据盘挂载进入进行处理。这样在容器启动后,容器内的虚拟电脑会自动创建被添加的目录。

-v参数中,冒号 " : " 前面的目录是宿主机目录,后面的目录是容器内目录。详见:http://blog.csdn.net/magerguo/article/details/72514813

代码语言:javascript
复制
docker run -it -v /Users/jmzeng/tmp:/work_dir seandavi/lancet /bin/bash
                  ----------------- -------------------------
                          ↓                    ↓
                       宿主机目录           容器内目录                   

这样docker能访问本机的/Users/jmzeng/tmp的内容,同时对镜像容器里面的/work_dir目录的修改等同于对本机的/Users/jmzeng/tmp的修改

3. 处理数据

软件示例代码很简单:

代码语言:javascript
复制
lancet --tumor T.bam --normal N.bam --ref ref.fa --reg 22:1-51304566 --num-threads 8 > out.vcf

有趣的是作者制作的镜像其实也有错误,lancet软件安装是失败的,不过docker的好处是里面可以使用root权限。

代码语言:javascript
复制
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

但是为什么jimmy不自己创建一个成功的lancet镜像呢?

当然是还有续集啦!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档